2012-05-21 3 views
9

ho fatto questo:ottenere il corpo di risposta di HttpResponse

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

La cosa a questo proposito è che i primi println() visualizzato questo: [email protected] che è buono.

Ma il secondo System.out.println("finalResult"+responseBody.toString()); visualizza solo questo finalResult. Allora, cosa c'è di sbagliato in questo:

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

???

IMPORTANTE Questo HttpEntity entity = response.getEntity(); è uguale a [email protected]. Quindi il problema deve essere qui:

Risposta stringa: Bby = EntityUtils.toString (entità) ;.

Si prega di aiutare !!!

risposta

24

Innanzitutto, verificare se il server non restituisce la risposta in bianco:

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

secondo luogo, cercare il seguente per convertire la risposta in stringa:

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()); 
+0

visualizza solo finalResult. Non so perché !!! – adrian

+0

significa che non ci sono dati restituiti dal servizio web – waqaslam

+0

ma quando visualizzo HttpEntity entity = response.getEntity(); \t \t \t \t \t \t System.out.println ("finalResult" + entità); mostra [email protected] Ciò significa che la risposta dal webservice non è nulla, giusto? – adrian

1

Prova questo:

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

rd è [email protected] ma body = rd.readLine(); è zero! – adrian

0

prova questo

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

Prova questo:

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

      } 
     }); 
    } 
3
[email protected] 

risposta venire quando il risultato della stampa direttamente HttpEntity oggetto. ad esempio:

HttpEntity httpEntity=httpResponse.getEntity(); 

Ora, per ottenere la risposta effettiva dal server abbiamo bisogno di fare come segue:

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

basta chiamare metodo di cui sopra e passare httpEntity come argomento. Godere!!

5

È possibile utilizzare questo:

String s = EntityUtils.toString(httpRes.getEntity());