區域 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.UnknownHostException
java.net.SocketTimeoutException
java.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 要求
您可以使用java.net.URLConnection
發出傳出 HTTP 要求。
以下程式碼片段示範如何執行基本 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);
如果您的應用程式直接使用基礎 urlfetch
套件,而非 java.net
,則應用程式必須指定 doNotFollowRedirects
。
發出 HTTPS 要求
如果您使用的是網址擷取,請使用 urlfetch
套件中的 FetchOptions
類別發出 HTTPS 要求,然後呼叫 validateCertificate()
。
發出非同步要求
HTTP(S) 要求預設為同步。如要發出非同步要求,應用程式必須使用 URLFetchService
的 fetchAsync()
方法。這個方法會傳回 java.util.concurrent.Future<HTTPResponse>
。
發出要求至其他 App Engine 應用程式
發出要求至其他 App Engine 應用程式時,App Engine 應用程式必須在要求中加入 X-Appengine-Inbound-Appid
標頭以表明自己的身分。如果您指示網址擷取服務不要追蹤重新導向,App Engine 會自動在要求中加入這個標頭。
如要瞭解如何停用重新導向,請參閱「停用重新導向」。
後續步驟
如要瞭解網址擷取服務,例如透過網址擷取要求傳送的標頭,請參閱傳出要求一文。