ID regione
Il REGION_ID
è un codice abbreviato che Google assegna
in base alla regione selezionata durante la creazione dell'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 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 riceverai 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 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.
Utilizzo di Recupero URL
Se devi utilizzare URL Fetch 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>
Emettere una richiesta HTTP
Invii una richiesta HTTP in uscita utilizzandojava.net.URLConnection
.
Il seguente snippet 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 all'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
eseguendo il cast dell'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.
Il seguente snippet mostra come utilizzare HttpURLConnection
per eseguire una richiesta più avanzata, inviando i dati di un modulo web tramite una richiesta PUT
:
Imposta 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
.
Impostare le intestazioni
Se utilizzi URL Fetch, puoi impostare un'intestazione HTTP nella 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 URL Fetch, il servizio URL Fetch 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 reindirizzamenti HTTP, ti consigliamo di disattivarli.
Per disattivare 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
anziché java.net
, deve specificare
doNotFollowRedirects
.
Emettere una richiesta HTTPS
Per impostazione predefinita, il servizio URL Fetch sottostante convalida il certificato dell'host che contatta e rifiuta le richieste se il certificato non corrisponde. Non è necessario proteggere esplicitamente la richiesta.
Disattiva la convalida del certificato host
Per disattivare la convalida automatica del certificato host in URL Fetch,
invia una richiesta HTTPS utilizzando la classe FetchOptions
nel pacchetto urlfetch
e chiama doNotValidateCertificate()
.
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 URLFetchService
fetchAsync()
. Questo metodo restituisce un
java.util.concurrent.Future<HTTPResponse>
.
Emettere una richiesta a un'altra app App Engine
Quando invii 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 istruisci il servizio URL Fetch a non seguire i reindirizzamenti, App Engine
aggiungerà automaticamente questa intestazione alle richieste.
Per indicazioni su come disattivare i reindirizzamenti, vedi 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.