2013-04-16 93 views
0

我试图发送一个HTTP请求,这是应该返回一个JSON响应一个网站。问题是我没有得到json数据。但是,当我在浏览器中粘贴该网址时,它会显示json输出。我是新手。请帮助。HTTP请求未返回所需的JSON

这里是我的代码

HttpClient client = new DefaultHttpClient(); 
String url="http://directclientvendors.com/news24/api/get.php?type=news"; 
HttpGet request = new HttpGet(url); 
HttpResponse response; 
response = client.execute(request); 
BufferedReader br = 
    new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

String line = ""; 

while(br.ready()) 
{ 
    line+=br.readLine(); 
} 
System.out.println("line "+line); 
+1

的输出是什么,因为它是? – Adrian

+0

输出:行。它甚至不会进入while循环。 – dnivra

回答

3

你应该执行GET请求,而不是一个POST。请将请求类型更改为HttpGet。当您将其粘贴到地址栏并按回车键时,浏览器在URL上执行GET

另外使用读卡器+的StringBuilder/JsonReader/GSON从URL的响应内容阅读。字符串连接导致不必要地创建其他对象。

[编辑]

使我吃惊的API调用工作即使POST调用,以获取资源。问题必须出现在您的解析逻辑中。使用JsonReader适合我。这只是模板代码,但您可以填写剩下的其他JSON元素。无论POST是否正常工作,您仍应该使用GET进行此调用。

 HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://directclientvendors.com/news24/api/get.php?type=news"); 
     HttpResponse response = client.execute(request); 
     InputStream content = response.getEntity().getContent(); 
     JsonReader jsonReader = new JsonReader(new InputStreamReader(content, "UTF-8")); 
     jsonReader.beginObject(); 
     if(jsonReader.hasNext()) 
     { 
      System.out.println(jsonReader.nextName()); // prints 'news' 
      // BEGIN_ARRAY etc to parse the rest 
     } 
     // END_OBJECT and cleanup 
+0

非常感谢。它正在工作。 – dnivra

+0

不客气。 –