2013-04-16 94 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

不客氣。 –