ID de la région
Le REGION_ID
est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r
est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.
En savoir plus sur les ID de région
Cette page explique comment envoyer des requêtes HTTP(S) à partir de l'application App Engine.
Par défaut, les applications exécutées dans l'environnement d'exécution Java 8 utilisent des classes Java standards, telles quejava.net.HttpURLConnection
, pour les requêtes HTTP(S). Vous pouvez donc envoyer des requêtes comme vous le feriez pour toute autre application Java. Pour utiliser le comportement par défaut, vous devez activer la facturation pour votre application, sous peine d'être confronté aux exceptions suivantes :
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Utiliser des classes réseau standards de l'environnement d'exécution
Si vous utilisez les classes réseau Java standards, votre application aura accès aux fonctionnalités suivantes :
- Suppression de la limite de 32 Mo sur les données de requête
- Compatibilité avec HTTP 2.0
- Prise en charge de toutes les API Google Cloud accessibles à partir de la bibliothèque cliente Google Cloud pour Java
Utiliser le service URL Fetch
Si vous devez utiliser la récupération d'URL dans une application Java 8, ajoutez la ligne suivante à votre fichier appengine-web.xml :
<url-stream-handler>urlfetch</url-stream-handler>
Exemple :
<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>
Émettre une requête HTTP
Vous pouvez émettre une requête HTTP sortante à l'aide de la méthodejava.net.URLConnection
.
L'extrait de code ci-dessous montre comment envoyer une requête GET
HTTP de base.
L'application crée un objet URL
, puis appelle la méthode openStream()
de l'objet pour récupérer le contenu à cette URL :
Pour les requêtes plus avancées, utilisez java.net.HttpURLConnection
comme suit :
- Créez un objet
URL
. - Créez un objet
URLConnection
en appelant la méthodeopenConnection()
de votre objetURL
. - Créez un objet
HttpURLConnection
en castant votre objetURLConnection
vers le type d'objetHttpURLConnection
. - Définissez la méthode de requête de l'objet
HttpURLConnection
. - Créez un flux de sortie pour la requête.
- Écrivez la charge utile de requête dans le flux.
- Fermez le flux.
L'extrait suivant montre comment utiliser HttpURLConnection
pour effectuer une requête plus avancée, en envoyant des données à partir d'un formulaire Web via une requête PUT
:
Définir un délai d'inactivité de requête
Si vous utilisez la récupération d'URL, vous pouvez régler la date limite par défaut pour les requêtes à l'aide du paramètre appengine.api.urlfetch.defaultDeadline dans le fichier appengine-web.xml
.
Définir des en-têtes
Si vous utilisez la récupération d'URL, vous pouvez définir un en-tête HTTP par défaut pour la requête sortante, en appelant la méthode setRequestProperty()
de votre objet HttpURLConnection
. L'extrait suivant définit l'en-tête X-MyApp-Version
sur 2.7.3
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Désactiver les redirections
Par défaut,HttpURLConnection
suit les redirections HTTP.
Si vous utilisez la récupération d'URL, le service de récupération d'URL sous-jacent suit jusqu'à cinq redirections par défaut. Ces redirections peuvent transférer des informations sensibles, telles que des en-têtes d'autorisation, vers la destination de redirection. Si votre application ne nécessite pas de redirections HTTP, il est recommandé de les désactiver.
Pour désactiver ce comportement, transmettez la valeur false
à la méthode setInstanceFollowRedirects()
de votre objet HttpURLConnection
:
conn.setInstanceFollowRedirects(false);
Si votre application utilise directement le package urlfetch
sous-jacent au lieu de java.net
, elle doit spécifier doNotFollowRedirects
.
Émettre une requête HTTPS
Si vous utilisez la récupération d'URL, émettez une requête HTTPS à l'aide de la classe FetchOptions
du package urlfetch
et appelez validateCertificate()
.
Émettre une requête asynchrone
Les requêtes HTTP(S) sont synchrones par défaut. Pour émettre une requête asynchrone, votre application doit utiliser la méthode fetchAsync()
de URLFetchService
. Cette méthode renvoie un élément java.util.concurrent.Future<HTTPResponse>
.
Envoyer une requête à une autre application App Engine
Lors de l'envoi d'une requête à une autre application App Engine, celle-ci doit affirmer son identité en ajoutant l'en-tête X-Appengine-Inbound-Appid
à la requête.
Si vous indiquez au service de récupération d'URL de ne pas suivre les redirections, App Engine ajoutera automatiquement cet en-tête aux requêtes.
Consultez Désactiver les redirections pour des conseils sur la désactivation des redirections.
Étape suivante
Pour en savoir plus sur le service de récupération d'URL, y compris sur les en-têtes envoyés dans une requête de récupération d'URL, consultez la page Requêtes sortantes.