ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici 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 inviare richieste HTTP(S) dall'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
. Invia 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, verranno applicate le seguenti eccezioni:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Utilizzo delle classi di rete 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 della richiesta è stato 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 URL
Se devi utilizzare il recupero URL in un'app Java 8, aggiungi la seguente riga al 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>
Invio di una richiesta HTTP
Puoi inviare una richiesta HTTP in uscita utilizzandojava.net.URLConnection
.
Lo snippet seguente mostra come eseguire una richiesta GET
HTTP 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
nel seguente modo:
- Crea un nuovo oggetto
URL
. - Crea un nuovo oggetto
URLConnection
chiamando il metodoopenConnection()
dell'oggettoURL
. - Crea un nuovo oggetto
HttpURLConnection
trasmettendo il tuo oggettoURLConnection
al 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 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 URL, puoi impostare un'intestazione HTTP sulla richiesta in uscita richiamando 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 recupero URL, per impostazione predefinita il relativo servizio sottostante 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 reindirizzamenti HTTP, ti consigliamo di disattivarli.
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
.
Emettere una richiesta HTTPS
Se usi il recupero URL, invia una richiesta HTTPS utilizzando la classe FetchOptions
nel pacchetto urlfetch
e chiama validateCertificate()
.
Emettere una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per inviare una richiesta asincrona, la tua applicazione deve utilizzare il metodo fetchAsync()
di URLFetchService
. Questo metodo restituisce un
java.util.concurrent.Future<HTTPResponse>
.
Emissione 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à questa intestazione alle richieste automaticamente.
Per istruzioni su come disattivare i reindirizzamenti, consulta la sezione Disattivazione dei reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, come le intestazioni inviate in una richiesta di recupero URL in Richieste in uscita.