如何获得HTTP响应正文作为字符串? [英] How can I get an HTTP response body as a string?
问题描述
我知道这里曾经有一种使用Apache Commons来获得它的方法:
I know there used to be a way to get it with Apache Commons as documented here:
http://hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html
...以及此处的示例:
...and an example here:
http://www.kodejava.org/examples/416.html
...但是我相信这已被弃用.
...but I believe this is deprecated.
还有其他方法可以用Java发出http get请求并以字符串而不是流的形式获取响应正文吗?
Is there any other way to make an http get request in Java and get the response body as a string and not a stream?
推荐答案
我能想到的每个库都返回一个流.您可以使用在一个方法调用中将 InputStream
读入 String
.例如:
Every library I can think of returns a stream. You could use IOUtils.toString()
from Apache Commons IO to read an InputStream
into a String
in one method call. E.g.:
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,而不是使用本地系统默认值.
Update: I changed the example above to use the content encoding from the response if available. Otherwise it'll default to UTF-8 as a best guess, instead of using the local system default.
这篇关于如何获得HTTP响应正文作为字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!