在 httpclient 中,将 HttpEntity 转换为字符串的最优雅/正确的方法是什么?
我正在使用 Apache httpcomponents Java 库 获取网页。连接结果后,我得到的是 HttpEntity
有一个方法 getContent()
返回一个 InputStream
并且还有一个方法 writeTo() 写入 OutputStream。
我想将结果转换为字符串以提取信息。最优雅(且安全)的方法是什么?
一些可能的解决方案:
- 写入 ByteArrayOutputStream ,然后使用 String 构造函数将这些字节转换为 String
- 使用 InputStreamReader 直接从流中读取,然后放入 StringBuilder
这两种感觉都有点难看。您会建议选择其中之一还是其他?
I'm fetching a web page using the Apache httpcomponents Java library. After connecting the result I get is an HttpEntity
which has a method getContent()
which returns an InputStream
and also has a method writeTo()
which writes to an OutputStream.
I want to turn the result into a String for extracting information. What is the most elegant (and safe) way to do this?
Some possible solutions:
- Write to a
ByteArrayOutputStream
and then convert those bytes to a String with a String constructor - use InputStreamReader to read straight from the stream, and put into a StringBuilder
Both of these feel a bit ugly. Would you recommend choosing one of these or something else?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
System.out.println( EntityUtils.toString(httpResponse.getEntity()) );
System.out.println( EntityUtils.toString(httpResponse.getEntity()) );
怎么样(伪):
在这种情况下,您必须自己处理异常。
What about (pseudo):
You would have to handle exceptions on your own in this case.
这可能很丑陋,但我认为这是唯一的方法。您可以使用 IOUtils.toString() 来自 Commons-IO,但无需编写您自己的代码。
It may be ugly, but I think that's the only way to do it. You can use IOUtils.toString() from Commons-IO though without having to write your own code.