从 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.