2012-07-09 87 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()); 
相关问题