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) depuis votre application App Engine à l'aide du service de récupération d'URL pour les environnements d'exécution de deuxième génération.
Avant de suivre les instructions de cette page, nous vous recommandons d'utiliser des solutions idiomatiques de langage pour émettre des requêtes HTTP(S) avant d'utiliser le service de récupération d'URL. Le principal cas d'utilisation de la récupération d'URL est lorsque vous souhaitez envoyer des requêtes HTTP(S) à une autre application App Engine et revendiquer l'identité de votre application sur cette requête.
Pour en savoir plus sur les limites de taille des requêtes et les en-têtes envoyés dans une requête de récupération d'URL, consultez Requêtes sortantes.
Par défaut, les applications exécutées dans l'environnement d'exécution Java 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.
Utiliser des classes réseau standard de l'environnement d'exécution
Si vous utilisez les classes réseau Java standards, votre application aura accès aux fonctionnalités suivantes :
- La limite de 32 Mo sur les données de requête ne s'applique pas.
- Compatibilité avec HTTP 2.0
- Prise en charge de toutes les API basées sur Google Cloudaccessibles à partir des bibliothèques clientes Cloud pour Java.
Utiliser URL Fetch
Si vous devez utiliser la récupération d'URL dans une application Java, 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
Pour émettre des requêtes HTTP(S) sortantes à l'aide du service de récupération d'URL, utilisez java.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
URLConnectionen appelant la méthodeopenConnection()de votre objetURL. - Créez un objet
HttpURLConnectionen castant votre objetURLConnectionvers 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 et envoyer des données à partir d'un formulaire Web à l'aide d'une requête PUT :
Définir un délai avant expiration de la requête
Si vous utilisez la récupération d'URL, ajustez la date limite par défaut des 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
Par défaut, le service de récupération d'URL sous-jacent valide le certificat de l'hôte qu'il contacte et refuse les requêtes si le certificat n'est pas conforme. Vous n'avez pas besoin de sécuriser explicitement votre demande.
Désactiver la validation du certificat de l'hôte
Pour désactiver la validation automatique du certificat de l'hôte dans URL Fetch, émettez une requête HTTPS à l'aide de la classe FetchOptions du package urlfetch et appelez la méthode doNotValidateCertificate().
É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
Lorsque vous utilisez URL Fetch pour envoyer une requête à une autre application App Engine, votre application peut 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.
Étapes suivantes
Pour en savoir plus sur le service URL Fetch, y compris sur les en-têtes envoyés dans une requête URL Fetch, consultez la page Requêtes sortantes.