HttpResponse to String android

Max*_*Max 43 android

我试图使用下面的代码将http响应转换为字符串,但我的响应字符串正在中间终止任何想法,如何将http响应转换为字符串,以便我不会得到任何缓冲区问题.

private static String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append((line + "\n"));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close(); 
        } catch (IOException e) {
            e.printStackTrace(); 
        }
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

有任何建议请帮忙.谢谢Deepesh

小智 112

我认为,有一种更简单的方法:

String result = EntityUtils.toString(resp_entity);
Run Code Online (Sandbox Code Playgroud)

对?

  • 这是convertStreamToString*的单行替换,但它消耗了缓冲区!这意味着你不能两次调用它(例如,在一行中用于日志,在下一行用于进行实际处理).你必须评论前者才能拥有后者. (4认同)
  • 这里的“resp_entity”是什么? (2认同)

ayu*_*lin 24

像这样获取响应InputStream:

httpResponse = client.execute(request);
HttpEntity entity = httpResponse.getEntity();
InputStream is = entity.getContent();
Run Code Online (Sandbox Code Playgroud)

试试这个方法:

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append((line + "\n"));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

  • 问题是什么...... logcat没有打印大字符串,数据总是存在于变量中. (5认同)

Lau*_*ier 13

HttpResponse response = http.execute(httpMethod);
int responseCode = response.getStatusLine().getStatusCode();
switch(responseCode) {
case 200:
HttpEntity entity = response.getEntity();
    if(entity != null) {
        String responseBody = EntityUtils.toString(entity);
    }
    break;
}
Run Code Online (Sandbox Code Playgroud)

请参阅http://cdrussell.blogspot.com.es/2011/12/android-get-body-of-http-response-as.html


Dha*_*dra 6

HttpPost httppost;
        DefaultHttpClient httpclient;
        ResponseHandler <String> res=new BasicResponseHandler();  
        List<NameValuePair> nameValuePairs;
        String bytesSent;

        httppost = new HttpPost(URL OF YOUR SITE);  
        HttpParams params = new BasicHttpParams();  

        HttpProtocolParams.setContentCharset(params, "UTF-8");

        httpclient = new DefaultHttpClient(params);
        nameValuePairs = new ArrayList<NameValuePair>(2);  
        nameValuePairs.add(new BasicNameValuePair("key1", value1));
        nameValuePairs.add(new BasicNameValuePair("key2", value2));
        nameValuePairs.add(new BasicNameValuePair("key3", value3));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
        bytesSent = httpclient.execute(httppost, res);
Run Code Online (Sandbox Code Playgroud)

这是使用此HTTPPOST的代码,您可以在String中获取响应.

如果必须将查询字符串传递给服务器,则可以使用 nameValuePairs