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 il giorno
Febbraio 2020, REGION_ID.r
è incluso in
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), comejava.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 dal Libreria client di Google Cloud per Java.
Utilizzo del 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
richiamando l'oggettoURL
openConnection()
. - 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 dati da un modulo web
per una richiesta PUT
:
Impostazione di un timeout della richiesta
Se utilizzi il recupero URL, puoi modificare la scadenza predefinita
richieste utilizzando appengine.api.urlfetch.defaultDeadline
nel file appengine-web.xml
.
Impostazione delle intestazioni
Se utilizzi il recupero degli 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");
Disattivazione dei reindirizzamenti
Per impostazione predefinita,HttpURLConnection
segue i reindirizzamenti HTTP.
Se utilizzi il recupero URL, il servizio di recupero URL sottostante segue fino a cinque reindirizzamenti per impostazione predefinita. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, ad esempio come 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 tuo HttpURLConnection
metodo setInstanceFollowRedirects()
dell'oggetto:
conn.setInstanceFollowRedirects(false);
Se la tua app utilizza direttamente il pacchetto urlfetch
sottostante
anziché java.net
, la tua app 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()
.
Emissione di una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per emettere un
richiesta, la tua applicazione deve utilizzare
di URLFetchService
fetchAsync()
. 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 di App Engine, la tua app di App Engine
deve dichiarare 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 indicazioni sulla disattivazione dei reindirizzamenti, consulta la sezione 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.