2012-07-09 48 views
0

任何曾經從Android調用過setlist.fm API的人?我試圖執行以下代碼:使用來自setlist.fm的JSON響應調用REST API

 DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet getRequest; 

     try 
     { 
      getRequest = new HttpGet(url); 
      HttpResponse getResponse = client.execute(getRequest); 
      HttpEntity getResponseEntity = getResponse.getEntity(); 
      return getResponseEntity.getContent(); 
     } 
     catch (Exception e) 
     { 
      Log.w(getClass().getSimpleName(), "Error for URL " + url, e); 
      return null; 
     } 

但我碰到兩個問題似乎。執行似乎總是以200的狀態行正確返回,但是當我嘗試獲取實體時,即使響應對象顯示返回了basichttpentity對象,長度也是-1。另外,當我嘗試調用getContent時,出於某種原因使用泛型異常。我嘗試使用的示例API調用是http://api.setlist.fm/rest/0.1/search/setlists.json?artistName=Prince

任何建議都會受到歡迎。

謝謝!

回答

0

我想出了這個問題。看起來從API返回的響應是流式傳輸的,並且在我們試圖在實體完成之前抓取實體。我刪除此代碼:

HttpEntity getResponseEntity = getResponse.getEntity(); 
return getResponseEntity.getContent(); 

,取而代之的是:

return EntityUtils.toString(getResponse.getEntity());