4

私はJavaアプリケーションを持っています:

-このアプリケーションは文字列を送信します:

HttpClient httpClient = new DefaultHttpClient();

    try {
        HttpPost request = new HttpPost(url);
        StringEntity params = new StringEntity(xml);
        request.addHeader("content-type", "application/x-www-form-urlencoded");
        request.setEntity(params);
        HttpResponse response = httpClient.execute(request);

        // handle response here...
        String res= response.toString();
        System.out.println("RESPONSE=>\n"+response); //where i read the response
    } catch (Exception ex) {
        // handle exception here
    } finally {
        httpClient.getConnectionManager().shutdown();
    }

私はサーブレットでこの文字列を使用しており、文字列応答を送信したいだけです。

response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.print("TEST");

しかし、私が応答を読んだとき、私はちょうど私のヘッダーを持っています:

RESPONSE=>
HTTP/1.1 200 OK [X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7), Server: GlassFish Server Open Source Edition 3.1.2.2, Content-Type: text/html;charset=UTF-8, Content-Length: 83, Date: Fri, 14 Dec 2012 17:17:07 GMT]

誰かが私を助けることができますか?

4

1 に答える 1

3

回答日を読み取る方法が間違っています。呼び出し:

String res= response.toString();

含まれているデータではなく、Response オブジェクトの文字列表現を提供するだけです。Apache Http Commons ライブラリには、 と呼ばれる、応答を読みやすくするためのユーティリティ クラスがありますEntityUtils。代わりにこれを使用して、応答本文全体を読み取ります。これを行う前に、リクエストが実際に正常に完了したことを確認する必要があることを忘れないでください。

if(response.getStatusLine().getStatusCode() == 200) {
    final String res = EntityUtils.toString(response.getEntity());
}
于 2012-12-14T17:38:40.863 に答える