2014-11-01 3 views
0

Надеюсь, что кто-то может помочь мне с действительно причудливой проблемой, которую я испытываю.Очень странный нулевой указатель вопроса

В приведенном ниже коде я пытаюсь распечатать номер, переданный в запросе. Его строка называется номером.

String number = request.getParameter("number"); 

^Строка

out.print(number); 

^Printing номер

В данный момент это неисправное с нулевым указателем за исключением, однако, когда я распечатать number.length() печатает длину.

Трассировка стека также говорит, что нулевой указатель встречающийся на этой линии

JSONObject JSONOBJ = new JSONObject(APIResponse.Response); 

Может кто-нибудь объяснить, что происходит?

Спасибо!

<% 
if (request.getParameter("number") != null) 
{ 

    String number = request.getParameter("number"); 
    if (number.matches("^[0-9]+")) 
    { 
%> 

     <% 
      ApiRequest APIRequest = new ApiRequest(
          "/broadband/availability/" + number, "GET", null); 

        /* 
        COULD ALSO PASS POSTCODE BUT ONLY USING CLI FOR NOW 
        */ 

        ApiClient APIClient = new ApiClient(); 
        api.ApiResponse APIResponse = APIClient.send(APIRequest); 

        JSONObject JSONOBJ = new JSONObject(APIResponse.Response); 

        JSONArray JSONARR = JSONOBJ.getJSONArray("products"); 
     %> 

       Services for 
       <% 
       out.print(number); 
      %> 
+0

Что такое 'out' и где он установлен? (Кроме того, используете ли вы какую-то фреймворк, о которой вы не упоминали в тегах? Я не знаю, что это за те '<%' штук.) – ajb

+0

Извините, должно быть, это JSP. Вне <% %> есть HTML. Out - это браузер. – FMC

+0

Вы пробовали обрезать 'String'? 'String number = request.getParameter (« число »); number = (number! = null)? number.trim(): "0"; ' –

ответ

0

Если вы действительно получать NPE на этой линии:

JSONObject JSONOBJ = new JSONObject(APIResponse.Response); 

, то единственное объяснение состоит в том, что APIResponse (Тьфу !!!) является null. А это значит, что

APIClient.send(APIRequest); 

(Тьфу дважды !!) возвращается null. Какие причины не могут быть определены без просмотра исходного кода и/или javadocs для этих классов APIxxxx.


Это единственное доказательство, что вы предоставили достаточную специфику для точного диагноза.

Вы также упомянули о получении NPE при печати номера. Но я подозреваю, что это не то, что действительно происходит. (Для начала, если NPE встречается на линии, ваш сказал, что происходит, то он НЕ печатает номер в этой точке.)

Смежные вопросы