ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono apparire simili ai codici di paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Questa pagina descrive come emettere richieste HTTP(S) dalla tua app App Engine.
Per impostazione predefinita, le applicazioni in esecuzione nel runtime Java 8 utilizzano classi Java standard per le richieste HTTP(S), ad esempiojava.net.HttpURLConnection
. Puoi inviare le richieste
come faresti per qualsiasi altra applicazione Java. Per utilizzare il comportamento predefinito, devi abilitare la fatturazione per la tua applicazione. In caso contrario, riceverai le seguenti eccezioni:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Utilizzo delle classi di rete di runtime standard
Se utilizzi le classi di rete Java standard, la tua app avrà accesso alle seguenti funzionalità:
- Il limite di 32 MB per i dati delle richieste viene rimosso.
- Supporto per HTTP 2.0.
- Supporta tutte le API basate su Google Cloud accessibili dalla libreria client di Google Cloud per Java.
Utilizzo del recupero degli URL
Se devi utilizzare il recupero URL in un'app Java 8, aggiungi la seguente riga al tuo file appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
Ad esempio:
<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>
Emissione di una richiesta HTTP
Emetti una richiesta HTTP in uscita utilizzandojava.net.URLConnection
.
Lo snippet seguente mostra come eseguire una richiesta HTTP GET
di base.
L'applicazione crea un nuovo oggetto URL
, quindi chiama il metodo openStream()
dell'oggetto per recuperare i contenuti in quell'URL:
Per richieste più avanzate, utilizza java.net.HttpURLConnection
come segue:
- Crea un nuovo oggetto
URL
. - Crea un nuovo oggetto
URLConnection
chiamando il metodoopenConnection()
dell'oggettoURL
. - Crea un nuovo oggetto
HttpURLConnection
trasmettendo l'oggettoURLConnection
nel tipo di oggettoHttpURLConnection
. - Imposta il metodo di richiesta dell'oggetto
HttpURLConnection
. - Crea un flusso di output per la richiesta.
- Scrivi il payload della richiesta nel flusso.
- Chiudi lo stream.
Lo snippet seguente mostra come utilizzare HttpURLConnection
per eseguire una richiesta più avanzata, inviando i dati da un modulo web tramite una richiesta PUT
:
Impostazione di un timeout della richiesta
Se utilizzi il recupero di URL, puoi modificare la scadenza predefinita per le richieste utilizzando l'impostazione appengine.api.urlfetch.defaultDeadline nel file appengine-web.xml
.
Impostazione delle intestazioni
Se usi il recupero di URL, puoi impostare un'intestazione HTTP sulla richiesta in uscita, chiamando il metodo setRequestProperty()
dell'oggetto HttpURLConnection
. Lo snippet seguente imposta l'intestazione X-MyApp-Version
su 2.7.3
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Disattivazione dei reindirizzamenti
Per impostazione predefinita,HttpURLConnection
segue i reindirizzamenti HTTP.
Se utilizzi il servizio di recupero URL, per impostazione predefinita il servizio sottostante di recupero URL segue fino a cinque reindirizzamenti. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, come le intestazioni di autorizzazione, alla destinazione reindirizzata. Se la tua app non richiede i reindirizzamenti HTTP, ti consigliamo di disabilitare questi ultimi.
Per disabilitare questo comportamento, passa il valore false
al metodo setInstanceFollowRedirects()
dell'oggetto HttpURLConnection
:
conn.setInstanceFollowRedirects(false);
Se la tua app utilizza direttamente il pacchetto urlfetch
sottostante
invece di java.net
, l'app deve specificare
doNotFollowRedirects
.
Emissione di una richiesta HTTPS
Se usi il recupero di URL, invia una richiesta HTTPS utilizzando la classe FetchOptions
nel pacchetto urlfetch
e chiama validateCertificate()
.
Emissione di una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per inviare una richiesta asincrona, l'applicazione deve utilizzare il metodo fetchAsync()
di URLFetchService
. Questo metodo restituisce un valore java.util.concurrent.Future<HTTPResponse>
.
Invio di una richiesta a un'altra app App Engine
Quando invii una richiesta a un'altra app App Engine, questa deve dichiarare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se indichi al servizio di recupero URL di non seguire i reindirizzamenti, App Engine aggiungerà automaticamente questa intestazione alle richieste.
Per istruzioni su come disattivare i reindirizzamenti, consulta l'argomento Disattivazione dei reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero degli URL, come le intestazioni inviate in una richiesta di recupero degli URL in Richieste in uscita.