ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province 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) 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
. Invii le richieste come faresti per qualsiasi altra applicazione Java. Per utilizzare il comportamento predefinito,
devi attivare la fatturazione per la tua applicazione, altrimenti verranno visualizzate 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 Google Cloud per Java.
Utilizzare il recupero URL
Se devi utilizzare URL Fetch in un'app Java 8, aggiungi la seguente riga al tuo 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
Emetti 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 all'URL specificato:
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
eseguendo il casting dell'oggettoURLConnection
al tipo di oggettoHttpURLConnection
. - Imposta il metodo di richiesta dell'oggetto
HttpURLConnection
. - Crea uno stream di output per la richiesta.
- Scrivi il payload della richiesta nello stream.
- Chiudi lo stream.
Il seguente snippet 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 URL Fetch, puoi modificare la scadenza predefinita per le richieste utilizzando l'impostazione appengine.api.urlfetch.defaultDeadline nel file appengine-web.xml
.
Impostazione delle intestazioni
Se utilizzi il recupero tramite URL, puoi impostare un'intestazione HTTP sulla richiesta in uscita chiamando il metodo setRequestProperty()
dell'oggetto HttpURLConnection
. Il
seguente snippet imposta l'intestazione X-MyApp-Version
su 2.7.3
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Disattivare i reindirizzamenti
Per impostazione predefinita,HttpURLConnection
segue i reindirizzamenti HTTP.
Se utilizzi il recupero dell'URL, il servizio di recupero dell'URL sottostante segue fino a cinque reindirizzamenti per impostazione predefinita. 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 disattivarli.
Per disattivare questo comportamento, passa il valore false
al metodo setInstanceFollowRedirects()
dell'oggetto HttpURLConnection
:
conn.setInstanceFollowRedirects(false);
Se l'app utilizza direttamente il pacchetto urlfetch
di base
invece di java.net
, deve specificare
doNotFollowRedirects
.
Invio di una richiesta HTTPS
Se utilizzi URL Fetch, invia una richiesta HTTPS utilizzando la classe FetchOptions
nel pacchetto urlfetch
e chiama validateCertificate()
.
Invio di una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per emettere 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 emetti una richiesta a un'altra app App Engine, la tua app App Engine deve affermare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se indichi al servizio di recupero dell'URL di non seguire i reindirizzamenti, App Engine aggiugnerà automaticamente questa intestazione alle richieste.
Per istruzioni su come disattivare i reindirizzamenti, consulta Disattivare i reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, ad esempio le intestazioni inviate in una richiesta di recupero URL in Richieste in uscita.