it-swarm.com.de

Wie kann ich die zurückgesendete Nachricht von HttpResponse ausdrucken?

Ich habe diesen Code auf meinem Android-Handy.

   URI uri = new URI(url);
   HttpPost post = new HttpPost(uri);
   HttpClient client = new DefaultHttpClient();
   HttpResponse response = client.execute(post);

Ich habe eine asp.net-Webformular-Anwendung, die diese Seite laden muss

 Response.Output.Write("It worked");

Ich möchte diese Antwort von der HttpReponse nehmen und ausdrucken. Wie mache ich das?

Ich habe response.getEntity().toString() versucht, aber es scheint nur die Adresse im Speicher auszudrucken.

Vielen Dank

23
chobo2

Verwenden Sie ResponseHandler . Eine Codezeile. Siehe hier und hier für Android-Projekte, die es verwenden.

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/user");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);
        JSONObject response=new JSONObject(responseBody);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
} 

fügen Sie die Kombination aus diesem Beitrag und den vollständigen HttpClient bei - http://www.androidsnippets.org/snippets/36/ hinzu.

38
CommonsWare

Ich würde es einfach auf die alte Art tun. Dies ist kugelsicherer als ResponseHandler, falls Sie unterschiedliche Inhaltstypen in der Antwort erhalten.

ByteArrayOutputStream outstream = new ByteArrayOutputStream();
response.getEntity().writeTo(outstream);
byte [] responseBody = outstream.toByteArray();
8
hnviet

Ich habe den folgenden Code verwendet

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

StringBuilder total = new StringBuilder();

String line = null;

while ((line = r.readLine()) != null) {
   total.append(line);
}
r.close();
return total.toString();
6
Lunf

Dieser Code gibt die gesamte Antwortnachricht in reply als String und den Statuscode in rsp als int zurück.

respond = response.getStatusLine().getReasonPhrase();

rsp = response.getStatusLine().getStatusCode();`
4
Sanghita

Der einfachste Ansatz ist wahrscheinlich org.Apache.http.util.EntityUtils:

String message = EntityUtils.toString(response.getEntity());

Es liest den Inhalt einer Entität und gibt sie als String zurück. Der Inhalt wird mit dem Zeichensatz der Entität konvertiert (falls vorhanden), andernfalls wird "ISO-8859-1" verwendet.

Bei Bedarf können Sie explizit einen Standardzeichensatz übergeben, z. 

String message = EntityUtils.toString(response.getEntity(). "UTF-8");

Er erhält den Entitätsinhalt als String und verwendet den bereitgestellten Standardzeichensatz, wenn in der Entität keiner gefunden wird. Wenn der übergebene Standardzeichensatz Null ist, wird der Standardwert "ISO-8859-1" verwendet.

1
JimiLoe