Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Auf dieser Seite wird beschrieben, wie Sie in Ihrer App Engine-Anwendung HTTP(S)-Anfragen senden.
In der Java 8-Laufzeit ausgeführte Anwendungen verwenden standardmäßig Java-Standardklassen für HTTP(S)-Anfragen, z. B.java.net.HttpURLConnection
. Sie senden Anfragen wie bei jeder anderen Java-Anwendung. Um das Standardverhalten zu verwenden, müssen Sie die Abrechnung für Ihre Anwendung aktivieren. Andernfalls erhalten Sie die folgenden Ausnahmen:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Standardlaufzeit-Netzwerkklassen verwenden
Wenn Sie die Standard-Netzwerkklassen für Java verwenden, hat Ihre Anwendung Zugriff auf die folgenden Features:
- Die Beschränkung auf 32 MB für Anfragedaten wird entfernt.
- HTTP 2.0 wird unterstützt.
- Alle Google Cloud-basierten APIs, die über die Google Cloud-Clientbibliothek für Java zugänglich sind, werden unterstützt.
URL Fetch verwenden
Wenn Sie URL Fetch in einer Java 8-Anwendung verwenden müssen, fügen Sie der Datei appengine-web.xml die folgende Zeile hinzu:
<url-stream-handler>urlfetch</url-stream-handler>
Beispiel:
<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-Request senden
Verwenden Sie die Methodejava.net.URLConnection
, um ausgehende HTTP-Anfragen zu senden.
Das folgende Snippet veranschaulicht, wie eine grundlegende HTTP-GET
-Anfrage ausgeführt wird:
Die Anwendung erstellt ein neues URL
-Objekt und ruft dann die openStream()
-Methode des Objekts auf, um den Inhalt unter dieser URL abzurufen:
Für komplexere Anfragen verwenden Sie java.net.HttpURLConnection
so:
- Erstellen Sie ein neues
URL
-Objekt. - Erstellen Sie ein neues
URLConnection
-Objekt, indem Sie die MethodeopenConnection()
desURL
-Objekts aufrufen. - Erstellen Sie ein neues
HttpURLConnection
-Objekt, indem Sie dasURLConnection
-Objekt in den ObjekttypHttpURLConnection
umwandeln. - Legen Sie die Anfragemethode des
HttpURLConnection
-Objekts fest. - Erstellen Sie einen Ausgabestream für den Request.
- Schreiben Sie die Request-Nutzlast in den Stream.
- Schließen Sie den Stream.
Das folgende Snippet zeigt, wie Sie mit HttpURLConnection
eine komplexere Anfrage ausführen und Daten aus einem Webformular über eine PUT
-Anfrage senden:
Anfragezeitüberschreitung festlegen
Wenn Sie URL Fetch verwenden, können Sie die Standardfrist für Anfragen mit der Einstellung appengine.api.urlfetch.defaultDeadline in der Datei appengine-web.xml
anpassen.
Headers festlegen
Wenn Sie den URL-Abruf verwenden, können Sie einen HTTP-Header für die ausgehende Anfrage festlegen, indem Sie die Methode setRequestProperty()
Ihres HttpURLConnection
-Objekts aufrufen. Mit dem folgenden Snippet wird der Header von X-MyApp-Version
auf 2.7.3
gesetzt:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Weiterleitungen deaktivieren
HttpURLConnection
folgt standardmäßig HTTP-Weiterleitungen.
Wenn Sie URL-Abruf verwenden, folgt der zugrunde liegende URL-Abrufdienst standardmäßig bis zu fünf Weiterleitungen. Diese Weiterleitungen können vertrauliche Informationen wie Autorisierungsheader an das Weiterleitungsziel weiterleiten. Wenn Ihre Anwendung keine HTTP-Weiterleitungen erfordert, empfehlen wir, die Weiterleitungen zu deaktivieren.
Um dieses Verhalten zu deaktivieren, übergeben Sie den Wert false
an die Methode setInstanceFollowRedirects()
des HttpURLConnection
-Objekts:
conn.setInstanceFollowRedirects(false);
Wenn die Anwendung anstatt java.net
direkt das zugrunde liegende Paket urlfetch
verwendet, muss in der Anwendung doNotFollowRedirects
angegeben sein.
HTTPS-Request senden
Wenn Sie URL Fetch verwenden, senden Sie eine HTTPS-Anfrage mit der Klasse FetchOptions
im Paket urlfetch
und rufen Sie validateCertificate()
auf.
Asynchrone Requests senden
HTTP(S)-Requests sind standardmäßig synchron. Um eine asynchrone Anfrage zu senden, muss Ihre Anwendung die Methode fetchAsync()
von URLFetchService
verwenden. Diese Methode gibt eine java.util.concurrent.Future<HTTPResponse>
zurück.
Requests an andere App Engine-Anwendungen senden
Wenn Sie eine Anfrage an eine andere App Engine-Anwendung senden, muss die Identität dieser Anwendung bestätigt werden. Geben Sie zusätzlich in die Anfrage den Header X-Appengine-Inbound-Appid
ein.
Wenn Sie den URL-Abrufdienst so konfigurieren, dass er keiner Weiterleitung folgt, fügt App Engine diesen Header automatisch zu Anfragen hinzu.
Informationen zum Deaktivieren von Weiterleitungen finden Sie unter Weiterleitungen deaktivieren.
Nächste Schritte
Unter Ausgehende Anfragen finden Sie weitere Informationen zum URL-Abrufdienst, z. B. zu den Headern, die in einer URL-Abrufanfrage gesendet werden.