web-dev-qa-db-ja.com

HttpResponseから返されたメッセージを印刷する方法は?

Android電話でこのコードを持っています。

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

私はこれをページにロードするasp.net Webフォームアプリケーションを持っています

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

このResponseをHttpReponseから取得して印刷したいと思います。どうすればいいですか?

response.getEntity().toString()を試しましたが、メモリ内のアドレスを出力するようです。

ありがとう

24
chobo2

ResponseHandler を使用します。 1行のコード。 here および here を参照してください。サンプルAndroidそれを使用するプロジェクト。

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

- http://www.androidsnippets.org/snippets/36/ でこの投稿と完全なHttpClientの組み合わせを追加します

38
CommonsWare

古い方法でやるだけです。応答で異なるコンテンツタイプを取得する場合、ResponseHandlerよりも強力です。

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

このコードは、応答メッセージ全体をrespondStringとして、ステータスコードをrspintとして返します。

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

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

最も簡単なアプローチは、おそらくorg.Apache.http.util.EntityUtils

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

エンティティのコンテンツを読み取り、文字列として返します。コンテンツはエンティティからの文字セット(存在する場合)を使用して変換されますが、失敗すると「ISO-8859-1」が使用されます。

必要に応じて、デフォルトの文字セットを明示的に渡すことができます-例えば.

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

エンティティに何も見つからない場合は、提供されたデフォルトの文字セットを使用して、エンティティのコンテンツを文字列として取得します。渡されたデフォルトの文字セットがヌルの場合、デフォルトの「ISO-8859-1」が使用されます。

1
JimiLoe