从 URL 获取响应正文作为字符串
String getText(String url) throws IOException {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//add headers to the connection, or check the status if desired..
// handle error response code it occurs
int responseCode = conn.getResponseCode();
InputStream inputStream;
if (200 <= responseCode && responseCode <= 299) {
inputStream = connection.getInputStream();
} else {
inputStream = connection.getErrorStream();
}
BufferedReader in = new BufferedReader(
new InputStreamReader(
inputStream));
StringBuilder response = new StringBuilder();
String currentLine;
while ((currentLine = in.readLine()) != null)
response.append(currentLine);
in.close();
return response.toString();
}
这将从指定的 URL 下载文本数据,并将其作为 String 返回。
这是如何工作的:
-
首先,我们使用
new
URL(url).openConnection()
从我们的 URL 创建一个HttpUrlConnection
。我们将UrlConnection
转换为HttpUrlConnection
,因此我们可以访问诸如添加标题(例如用户代理)或检查响应代码之类的内容。 (此示例不会这样做,但很容易添加。) -
然后,根据响应代码创建
InputStream
(用于错误处理) -
然后,创建一个
BufferedReader
,它允许我们从连接中获取的InputStream
中读取文本。 -
现在,我们将文本逐行附加到
StringBuilder
。 -
关闭
InputStream
,并返回我们现在拥有的 String。
笔记:
-
如果失败(例如网络错误或没有互联网连接),此方法将抛出
IoException
,如果给定的 URL 无效,它也会抛出未经检查的MalformedUrlException
。 -
它可用于从任何返回文本的 URL 进行读取,例如网页(HTML),返回 JSON 或 XML 的 REST API 等。
-
另请参阅: 在几行 Java 代码中读取 String 的 URL 。
用法:
很简单:
String text = getText(”http://example.com");
//Do something with the text from example.com, in this case the HTML.