小编典典

如何在Java中将http响应正文作为字符串获取?

java

我知道曾经有一种使用apache commons来获取它的方法,如此处记录的:http : //hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html 和此处的示例:

http://www.kodejava.org/examples/416.html

但我认为这已被弃用。还有其他方法可以在Java中发出http get请求并以字符串而不是流的形式获取响应正文吗?


阅读 688

收藏
2020-03-16

共2个答案

小编典典

我能想到的每个库都返回一个流。你可以使用IOUtils.toString()Apache的百科全书IO读取一个InputStreamString一个方法调用。例如:

URL url = new URL("http://www.example.com/");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
String body = IOUtils.toString(in, encoding);
System.out.println(body);

更新:我将上面的示例更改为使用响应中的内容编码(如果可用)。否则,作为最佳猜测,它将默认为UTF-8,而不是使用本地系统默认值。

2020-03-16
小编典典

这是我的工作项目中的两个示例。

使用EntityUtils和HttpEntity

HttpResponse response = httpClient.execute(new HttpGet(URL));
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");
System.out.println(responseString);

使用 BasicResponseHandler

HttpResponse response = httpClient.execute(new HttpGet(URL));
String responseString = new BasicResponseHandler().handleResponse(response);
System.out.println(responseString);
2020-03-16