2013-03-25 81 views
12

我见过的人写了自己的一个HttpResponse转换成字符串后使用的方法还真有些难看的代码,这看起来是这样的:如何从我的http响应android获取字符串?

httppost.setEntity(new UrlEncodedFormEntity(valuePairs)); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8"),8); 
StringBuilder sb = new StringBuilder(); 
sb.append(reader.readLine() + "\n"); 
String line="0"; 
while ((line = reader.readLine()) != null) { 
    sb.append(line + "\n"); 
} 
is.close(); 
String result = sb.toString(); 

不仅是有点乱,但这真的很难看,我经常不知道代码是怎么回事,因为这个混乱在它之前。有没有更好的方法来做到这一点?

回答

42

是的,有!你可以做到所有这一切!就像这样:

response = client.execute(post); 
String responseStr = EntityUtils.toString(response.getEntity()); 

开心应用使得

+0

这有一个问题。如果回复被压缩,这将不起作用。你必须调用'InputStream stream = AndroidHttpClient.getUngzippedContent(response.getEntity());'然后将InputStream转换为字符串。我还没找到更好的方法。 – 2014-07-26 16:30:04

+1

可能2013年的作品,但在2016年不是!这是我的错误 - >方法抛出'java.lang.IllegalStateException'异常。 – delive 2016-02-22 11:20:55

4

我做到了从HttpClient.execute documentation响应处理。使用处理程序作为.execute方法的第二个参数定义响应应该是什么格式。
我的代码folows:

HttpClient client = new DefaultHttpClient(); 

     HttpGet request = new HttpGet(params[0]); 
     ResponseHandler<String> handler = new BasicResponseHandler(); 
     String response = ""; 
     try { 
      response = client.execute(request, handler); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

params[0]是一个字符串形式的URL。说我的服务器以JSON返回响应可能很重要。所以最后我将我的response字符串转换为JSON。

+0

对我很好,我的促销代码验证服务器返回纯字符串“VALID”或“INVALID”。 – 2015-01-02 16:19:42

相关问题