Google Code 提供下列語言介面: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
您可以利用 java.net.URLConnection 從 Java 標準程式庫建立連線到 Java 應用程式的 HTTP 和 HTTPS 連線。「應用服務引擎」使用 URL 擷取服務實作此介面。
如需 java.net 的詳細資訊,請參閱 Sun 的 java.net.URLConnection 文件。
取得 URL 中之頁面內容的最簡單方法,就是建立 java.net.URL 物件,然後呼叫其 openStream() 方法。該方法會處理建立連線、發出 HTTP GET 要求及抓取回應資料的細節。
import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// ...
try {
URL url = new URL("http://www.example.com/atom.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
// ...
}
reader.close();
} catch (MalformedURLException e) {
// ...
} catch (IOException e) {
// ...
}
如需更為複雜的要求資訊,您可以呼叫 URL 物件的 openConnection() 方法以取得 URLConnection 物件 (可能為 HttpURLConnection 或 HttpsURLConnection,視 URL 而定)。 您可以在發出要求前,先備妥此物件的額外資訊。若要進行要求,您可以呼叫 URLConnection 上的方法,例如 getInputStream() 或 getOutputStream()。
「應用服務引擎」的 URLConnection 實作不會在遠端主機上維護持續性連線。當應用程式設定要求資料或寫入輸出串流時,要求資料會記錄在記憶體中。當應用程式存取任何與回應相關的資料 (例如,取得輸出串流或呼叫 connect() 方法) 時,「應用服務引擎」會呼叫含要求資料的 URL 擷取服務、取得回應、關閉連線並傳回回應資料。
下列範例以部分格式資料發出 HTTP POST 要求給 URL:
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
// ...
String message = URLEncoder.encode("my message", "UTF-8");
try {
URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("message=" + message);
writer.close();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// OK
} else {
// Server returned HTTP error code.
}
} catch (MalformedURLException e) {
// ...
} catch (IOException e) {
// ...
}
若要在外寄要求中設定 HTTP 標頭,請呼叫 HttpURLConnection 的 setRequestProperty() 方法。
connection.setRequestProperty("X-MyApp-Version", "2.7.3");
根據預設,HttpURLConnection 將隨著 HTTP 重新導向。URL 擷取服務最多將進行 5 次重新導向。
若要停用下列重新導向,請呼叫 HttpURLConnection 的 setFollowRedirects() 方法:
connection.setFollowRedirects(false);
URL 擷取服務不支援持續性 HTTP 連線。當應用程式使用 URLConnection 物件存取回應資料時,「應用服務引擎」會呼叫 URL 擷取服務以完成要求。擷取回應資料之後,要求資料即無法修改。
應用程式無法為要求設定明確的連線逾時。
URL 擷取服務會限制外寄要求和內送回應的資料大小。使用 java.net API 時,將以無訊息方式截斷超過限制的資料。低階 URL Fetch API (URL 擷取 API) 會讓您設定是否以無訊息方式截斷,或是否在超出限制時擲回例外狀況。