web-dev-qa-db-fra.com

obtenir le corps de réponse de HttpResponse

Je l'ai fait:

response = httpclient.execute(targetHost, httppost); 
    if(response.getStatusLine().getStatusCode() == 200)
                        {
    HttpEntity entity = response.getEntity();
    System.out.println("Entity:"+entity);
  if (entity != null) 
                            {
        String responseBody = EntityUtils.toString(entity);
        System.out.println("finalResult"+responseBody.toString());
                            }

Le problème est que le premier println() affiche ceci: org.Apache.http.conn.BasicManagedEntity@481e8150, ce qui est bien.

Mais le second System.out.println("finalResult"+responseBody.toString()); affiche uniquement cette finalResult. Alors, quel est le problème avec ceci:

String responseBody = EntityUtils.toString(entity);
            System.out.println("finalResult"+responseBody.toString());

???

IMPORTANTCe HttpEntity entity = response.getEntity(); est égal à org.Apache.http.conn.BasicManagedEntity@481e8150. SO le problème doit être ici: 

String responseBody = EntityUtils.toString (entité) ;.

S'il vous plaît aider !!!

9
adrian

Tout d’abord, voyez si votre serveur ne renvoie pas de réponse vide:

response.getEntity().getContentLength();  //it should not be 0

Deuxièmement, essayez ce qui suit pour convertir la réponse en chaîne:

StringBuilder sb = new StringBuilder();
try {
    BufferedReader reader = 
           new BufferedReader(new InputStreamReader(entity.getContent()), 65728);
    String line = null;

    while ((line = reader.readLine()) != null) {
        sb.append(line);
    }
}
catch (IOException e) { e.printStackTrace(); }
catch (Exception e) { e.printStackTrace(); }


System.out.println("finalResult " + sb.toString());
24
waqaslam

Vous pouvez utiliser celui-ci:

String s = EntityUtils.toString(httpRes.getEntity());
6
hany mhajna
 org.Apache.http.conn.BasicManagedEntity@f8a5dec

la réponse survient lorsque nous imprimons directement l’objet HttpEntity. par exemple:

 HttpEntity httpEntity=httpResponse.getEntity();

Maintenant, pour obtenir la réponse réelle du serveur, nous devons suivre les étapes suivantes:

 public String convertStreamtoString(InputStream is){

    String line="";
    String data="";
    try{
        BufferedReader br=new BufferedReader(new InputStreamReader(is));
        while((line=br.readLine())!=null){

            data+=line;
        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
        return  data;
}

il suffit d'appeler la méthode ci-dessus et de passer httpEntity en argument. Prendre plaisir!!

3
Aman Goel

Essaye ça : 

HttpEntity entity = response.getEntity();  
final String content;
    try
    {
        content = EntityUtils.toString(entity);

        runOnUiThread(new Runnable()
        {

            @Override
            public void run()
            {

                webView.loadData(content, "text/html", "UTF-8");

            }
        });
    }
1
Noman

Essaye ça:

BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String body = "";
while ((body = rd.readLine()) != null) 
{
    Log.e("HttpResponse", body);
}
1
Demonick

essaye ça

 BufferedReader in = new BufferedReader(new InputStreamReader(response
                        .getEntity().getContent()));

                //SB to make a string out of the inputstream
                StringBuffer sb = new StringBuffer("");
                String line = "";
                String NL = System.getProperty("line.separator");
                while ((line = in.readLine()) != null) {
                    sb.append(line + NL);
                }
                in.close();

                //the json string is stored here
            String  result = sb.toString();
0
Khan