Подтвердить что ты не робот

HttpResponse для String 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();
}

Любое предложение, пожалуйста, помогите. благодаря Deepesh

4b9b3361

Ответ 1

Я думаю, есть более простой способ:

String result = EntityUtils.toString(resp_entity);

верно?

Ответ 2

Получите ответ InputStream следующим образом:

httpResponse = client.execute(request);
HttpEntity entity = httpResponse.getEntity();
InputStream is = entity.getContent();

Попробуйте этот метод:

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();
}

Ответ 4

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);

Это код HTTPPOST, с помощью которого вы можете получить ответ в String.

Если вам нужно передать строку запроса на сервер, вы можете использовать nameValuePairs

Ответ 5

Если вы ищете более надежный способ сделать это для обработки кодировок и gzipped-ответов, попробуйте следующее:

String encoding = EntityUtils.getContentCharSet(response.getEntity());
encoding = encoding == null ? "UTF-8" : encoding;
InputStream stream = AndroidHttpClient.getUngzippedContent(response.getEntity());
InputStreamEntity unzEntity = new InputStreamEntity(stream,-1);
String response = EntityUtils.toString(unzEntity, encoding);

Ответ 6

Кто-то может попробовать это. Я протестировал его и работаю правильно.

 public String convertHttpResponseToString(HttpResponse res) {  
    InputStream is=null;   
    String responseString="";  
    try {  
        is=res.getEntity().getContent();  
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(is));  
        String line="";  
        StringBuffer sb=new StringBuffer();  
        while ((line=bufferedReader.readLine())!=null)  
        {  
        sb.append(line);  
        }  
        responseString=sb.toString();  
    } catch (Exception e)  
    {  
          // handle Exception here...
    }  
    return responseString;  

}  

Ответ 7

если у вас есть ответ вместо HttpResponse. Таким образом вы можете получить код состояния. Благодаря

 final int statusCode = response.code();