使用 Apache 的 HTTP 客户端时,将 HTTP 响应作为字符串获取的推荐方法是什么?

2022-09-02 23:04:08

我刚刚开始使用Apache的HTTP客户端库,并注意到没有内置的方法将HTTP响应作为字符串获取。我只是希望将其作为String,以便我可以将其传递给我正在使用的任何解析库。

将 HTTP 响应作为字符串获取的推荐方法是什么?以下是我发出请求的代码:

public String doGet(String strUrl, List<NameValuePair> lstParams) {

    String strResponse = null;

    try {

        HttpGet htpGet = new HttpGet(strUrl);
        htpGet.setEntity(new UrlEncodedFormEntity(lstParams));

        DefaultHttpClient dhcClient = new DefaultHttpClient();

        PersistentCookieStore pscStore = new PersistentCookieStore(this);
        dhcClient.setCookieStore(pscStore);

        HttpResponse resResponse = dhcClient.execute(htpGet);
        //strResponse = getResponse(resResponse);

    } catch (ClientProtocolException e) {
        throw e;
    } catch (IOException e) {
        throw e;
    }

    return strResponse;

}

答案 1

您可以使用 EntityUtils#toString() 来实现此目的。

// ...
HttpResponse response = client.execute(get);
String responseAsString = EntityUtils.toString(response.getEntity());
// ...

答案 2

您需要使用响应正文并获取响应:

BufferedReader br = new BufferedReader(new InputStreamReader(httpresponse.getEntity().getContent()));

然后阅读它:

String readLine;
String responseBody = "";
while (((readLine = br.readLine()) != null)) {
  responseBody += "\n" + readLine;
}

响应正文现在以字符串形式包含您的响应。

(最后不要忘记关闭缓冲阅读器:br.close())


推荐