區域 ID
REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
本頁面說明如何透過第二代執行階段的網址擷取服務,從 App Engine 應用程式發出 HTTP(S) 要求。
建議您先使用語言慣用解決方案發出 HTTP(S) 要求,再使用網址擷取服務。使用網址擷取服務的主要用途是向其他 App Engine 應用程式發出 HTTP(S) 要求,並在該要求中聲明應用程式的身分。
如要進一步瞭解要求大小上限和透過網址擷取要求傳送的標頭,請參閱傳出要求一文。
在預設情況下,在 Java 執行階段中執行的應用程式會使用標準 Java 類別處理 HTTP(S) 要求,例如java.net.HttpURLConnection。傳送要求的方式與其他 Java 應用程式相同。
使用標準執行階段網路類別
如果您使用標準 Java 網路類別,應用程式就能存取下列功能:
- 要求資料的 32 MB 限制不適用。
- 支援 HTTP 2.0。
- 支援可從 Java 適用的 Cloud 用戶端程式庫存取的所有 Google Cloud型 API。
使用網址擷取
如果必須在 Java 應用程式中使用 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(S) 要求,請使用 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 設定調整預設的要求截止時間。
設定標頭
如果您使用網址擷取服務,可以呼叫 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 要求
根據預設,基礎網址擷取服務會驗證所連線主機的憑證,如果憑證不符,就會拒絕要求。您不需要明確保護要求。
停用主機憑證驗證
如要在 URL Fetch 中停用自動驗證主機憑證的功能,請使用 urlfetch 套件中的 FetchOptions 類別發出 HTTPS 要求,並呼叫 doNotValidateCertificate() 方法。
發出非同步要求
HTTP(S) 要求預設為同步。如要發出非同步要求,應用程式必須使用 URLFetchService 的
fetchAsync() 方法。這個方法會傳回 java.util.concurrent.Future<HTTPResponse>。
向其他 App Engine 應用程式發出要求
使用網址擷取服務向其他 App Engine 應用程式發出要求時,您的應用程式可以在要求中加入 X-Appengine-Inbound-Appid 標頭,以表明自己的身分。
如果您指示網址擷取服務不要追蹤重新導向,App Engine 會自動在要求中加入這個標頭。如要瞭解如何停用重新導向,請參閱「停用重新導向」。
後續步驟
如要瞭解網址擷取服務,例如透過網址擷取要求傳送的標頭,請參閱傳出要求一文。