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