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