2011-12-02 38 views
0

我从我的Java文件调用Java servlet。该servlet文件具有返回JSON字符串的SOP。现在我希望在我的Java代码中使用该字符串,然后将其解析为XML。访问Servlet时的NullPointerException Java中的响应

我的代码如下:

URL urlS = new URL (servletURL); 
URLConnection urlc; 
urlc = urlS.openConnection(); 
BufferedReader in = new BufferedReader(new InputStreamReader(urlc.getInputStream())); 

String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println("We got JSON Buddy: "+inputLine); 
JSONObject js = new JSONObject(inputLine); 
System.out.println("We got json object js: "+js.toString()); 
in.close(); 

的问题是我的Java代码SOP是:

12-02 10:30:12.254: I/System.out(24169): We got JSON Buddy: {"movies": { "total": 19, "movie":[{"cover":"http://content9.flixster.com/movie/11/16/04/11160419_pro.jpg","tile":"A Very Harold & Kumar 3D Christmas","MovieDuration":"(R , 1 hr. 29 min.)","showtime":"                                                                                                                   9:35 PM                                                                                                                                           12:00 AM                                                                                                            ","theatre":"Rave Motion Pictures 18 + IMAX","url":"http://www.flixster.com/movie/a-very-harold-and-kumar-christmas"},{"cover":"http://content6.flixster.com/movie/11/16/12/11161272_pro.jpg","tile":"Arthur Christmas 3D","MovieDuration":"(PG , 1 hr. 37 min.)","showtime":"                                                                                                                   12:15 PM                                                                                                                                           3:00 PM                                                                                                                                           5:35 PM                                                                                                            ","theatre":"Rave Motion Pictures 18 + IMAX","url":"http://www.flixster.com/movie/arthur-christ 
12-02 10:30:12.266: I/System.out(24169): Exception: java.lang.NullPointerException 

的问题,我没有得到在inputLine完整的输出,其他问题是NullPointerException。我无法弄清楚为什么会发生这种情况。

+0

它是“Java”,而不是“JAVA”。 –

+0

糟糕!现在可以编辑我的简历了! – typedefcoder2

回答

4

你循环是这样做的:

while ((inputLine = in.readLine()) != null) 
       System.out.println("We got JSON Buddy: "+inputLine); 

对于循环终止,inputLine必须为空,因此当你在这里:JSONObject js = new JSONObject(inputLine); 你会得到一个空指针异常。

+0

是的..奇怪的inputLine仍然显示一些数据...我应该为此清理项目吗? – typedefcoder2

+0

你是什么意思,它“仍然显示一些数据?”你的意思是在调试器中?如果你只是在谈论log语句,那是因为第一次通过循环,inputLine不是null,所以控制进入正文并打印出日志语句。直到第二次迭代它被设置为空,然后控制退出循环并继续到下一个语句。 – Chris

+0

是的,我说的是一样的..谢谢你的澄清 – typedefcoder2

1

看看这是更好的:

 URL urlS = new URL (servletURL); 
     URLConnection urlc; 
     urlc = urlS.openConnection(); 
     BufferedReader in = new BufferedReader(new   InputStreamReader(urlc.getInputStream())); 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) { 
      System.out.println("We got JSON Buddy: "+inputLine); 
      JSONObject js = new JSONObject(inputLine);    
      System.out.println("We got json object js: "+js.toString()); 
     } 
     in.close(); 
+0

对不起,但是它不是我的代码吗?或者我看不出差异。 – typedefcoder2

+0

区别在于你想用'while'循环的块的大括号。 – srkavin

1

看你在做什么这里:

while ((inputLine = in.readLine()) != null) 
    System.out.println("We got JSON Buddy: "+inputLine); 
JSONObject js = new JSONObject(inputLine); 

你保持阅读直到inputLine为空。你然后电话:

JSONObject js = new JSONObject(inputLine); 

所以,你的代码是有效的:

while ((inputLine = in.readLine()) != null) 
    System.out.println("We got JSON Buddy: "+inputLine); 
JSONObject js = new JSONObject(null); 

想必这就是问题所在。所以,问题是:你在哪里想让循环?

+0

所以事情就是Servlet以我的JSON字符串的SOP响应我。但我不能在这里得到它,我可以稍后分解成变量...... – typedefcoder2

+0

@ typedef1:你是什么意思的“一个SOP”?无论如何,我已经解释了这里出了什么问题 - 和其他人一样。你实际上期望有多少行?如果你只想要一条线,那会简化一些事情。 –

+0

对不起,我认为SOP被广泛用于System.out.println – typedefcoder2