區域 ID
REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
本頁說明如何透過 App Engine 應用程式發出 HTTP(S) 要求。
在預設情況下,在 Java 8 執行階段中執行的應用程式會使用標準的 Java 類別提出 HTTP(S) 要求,例如java.net.HttpURLConnection。傳送要求的方式與其他 Java 應用程式相同。如要使用預設行為,您必須為應用程式啟用帳單功能,否則會收到下列例外狀況:
java.net.UnknownHostExceptionjava.net.SocketTimeoutExceptionjava.io.IOException
使用標準執行階段網路類別
如果您使用標準 Java 網路類別,應用程式就能存取下列功能:
- 移除要求資料的 32 MB 限制。
- 支援 HTTP 2.0。
- 支援可從 Google Cloud 用戶端程式庫 (適用 Java) 存取的所有 Google Cloud API。
使用網址擷取
若您必須在 Java 8 應用程式中使用 URL Fetch,請將以下行新增至 appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
例如:
<xml version="1.0" encoding="utf-8">
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<!-- ... -->
<url-stream-handler>urlfetch</url-stream-handler>
<!-- ... -->
</appengine-web-app>
發出 HTTP 要求
如要發出傳出 HTTP 要求,可使用java.net.URLConnection。
下列程式碼片段示範如何執行基本的 HTTP GET 要求。應用程式會建立新的 URL 物件,然後呼叫該物件的 openStream() 方法,擷取該網址的內容:
如需其他進階要求,請使用 java.net.HttpURLConnection,如下所示:
- 建立一個新的
URL物件。 - 呼叫
URL物件的openConnection()方法,建立新的URLConnection物件。 - 將
URLConnection物件轉換為HttpURLConnection物件類型,以建立新的HttpURLConnection物件。 - 設定
HttpURLConnection物件的要求方法。 - 為要求建立輸出串流。
- 將要求酬載寫入串流。
- 關閉串流。
下列程式碼片段示範如何使用 HttpURLConnection 執行更進階的要求,透過 PUT 要求提交網頁表單中的資料:
設定要求逾時
如果您使用 URL Fetch,可以在 appengine-web.xml 檔案中使用 appengine.api.urlfetch.defaultDeadline 設定,調整預設的要求截止時間。
設定標頭
如果您使用 URL Fetch,可以呼叫 HttpURLConnection 物件的 setRequestProperty() 方法,在傳出要求中設定 HTTP 標頭。下列程式碼片段會將 X-MyApp-Version 標頭設為 2.7.3:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
停用重新導向
根據預設,HttpURLConnection 會遵循 HTTP 重新導向。
如果您使用網址擷取服務,預設情況下,基礎網址擷取服務最多會追蹤五次重新導向。這些重新導向可能會將授權標頭等私密資訊轉送至重新導向目的地。如果應用程式不需要 HTTP 重新導向,建議停用重新導向。
如要停用這項行為,請將 false 值傳遞至 HttpURLConnection 物件的 setInstanceFollowRedirects() 方法:
conn.setInstanceFollowRedirects(false);
若您的應用程式未使用 java.net,而是直接使用基礎 urlfetch 套件,您的應用程式必須指定 doNotFollowRedirects。
發出 HTTPS 要求
根據預設,基礎網址擷取服務會驗證所連線主機的憑證,如果憑證不符,就會拒絕要求。您不需要明確保護要求。
停用主機憑證驗證
如要在網址擷取中停用自動驗證主機憑證的功能,請使用 urlfetch 套件中的 FetchOptions 類別發出 HTTPS 要求,並呼叫 doNotValidateCertificate()。
發出非同步要求
HTTP(S) 要求預設為同步。如要發出非同步要求,應用程式必須使用 URLFetchService 的
fetchAsync() 方法。這個方法會傳回 java.util.concurrent.Future<HTTPResponse>。
向其他 App Engine 應用程式發出要求
發出要求至其他 App Engine 應用程式時,App Engine 應用程式必須在要求中加入 X-Appengine-Inbound-Appid 標頭以表明自己的身分。如果您指示網址擷取服務不要追蹤重新導向,App Engine 會自動在要求中加入這個標頭。
如要瞭解如何停用重新導向,請參閱「停用重新導向」。
後續步驟
如要瞭解網址擷取服務,例如透過網址擷取要求傳送的標頭,請參閱傳出要求一文。