ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Esta página describe cómo emitir solicitudes HTTP(S) desde tu aplicación de App Engine.
De forma predeterminada, las aplicaciones que se ejecutan en el entorno de ejecución de Java 8 usan clases estándar de Java para las solicitudes HTTP(S), comojava.net.HttpURLConnection
. Las solicitudes se envían como se haría con cualquier otra aplicación de Java. A fin de usar el comportamiento predeterminado, debes habilitar la facturación para la aplicación; de lo contrario, obtendrás las siguientes excepciones:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Usa clases de red del entorno de ejecución estándar
Si usas las clases de red estándar de Java, la app tendrá acceso a las siguientes características:
- Se quita del límite de 32 MB para los datos de solicitudes.
- Compatibilidad con HTTP 2.0.
- Admite todas las API basadas en Google Cloud accesibles desde la Biblioteca cliente de Google Cloud para Java.
Usa la recuperación de URL
Si tienes que usar la recuperación de URL en una app de Java 8, agrega la siguiente línea a tu archivo appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
Por ejemplo:
<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>
Emite una solicitud HTTP
Debes emitir una solicitud HTTP saliente mediantejava.net.URLConnection
.
En el siguiente fragmento, se muestra cómo realizar una solicitud HTTP GET
básica.
La aplicación crea un objeto URL
nuevo y, luego, llama al método openStream()
del objeto para recuperar el contenido en esa URL:
Para solicitudes más avanzadas, usa java.net.HttpURLConnection
de la siguiente manera:
- Crea un objeto
URL
nuevo. - Crea un objeto
URLConnection
nuevo mediante una llamada al métodoopenConnection()
del objetoURL
. - Crea un objeto
HttpURLConnection
nuevo mediante la conversión del objetoURLConnection
al tipo de objetoHttpURLConnection
. - Configura el método de solicitud del objeto
HttpURLConnection
. - Crea un flujo de salida para la solicitud.
- Escribe la carga útil de la solicitud en el flujo.
- Cierra el flujo.
En el siguiente fragmento, se muestra cómo usar HttpURLConnection
para realizar una solicitud más avanzada y enviar datos desde un formulario web a través de una solicitud PUT
:
Configura el tiempo de espera de una solicitud
Si usas la recuperación de URL, puedes ajustar la fecha límite predeterminada para las solicitudes mediante la configuración appengine.api.urlfetch.defaultDeadline en el archivo appengine-web.xml
.
Configura los encabezados
Si usas la recuperación de URL, puedes establecer un encabezado HTTP en la solicitud saliente mediante una llamada al método setRequestProperty()
del objeto HttpURLConnection
. En el siguiente fragmento, se establece el encabezado X-MyApp-Version
como 2.7.3
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Inhabilita los redireccionamientos
De forma predeterminada,HttpURLConnection
sigue los redireccionamientos HTTP.
Si usas la recuperación de URL, el servicio de recuperación de URL subyacente sigue hasta cinco redireccionamientos de forma predeterminada. Estos redireccionamientos podrían reenviar información sensible, como los encabezados de autorización, al destino redireccionado. Si tu app no requiere redireccionamientos HTTP, se recomienda que los inhabilites.
Para inhabilitar este comportamiento, pasa el valor false
al método setInstanceFollowRedirects()
del objeto HttpURLConnection
:
conn.setInstanceFollowRedirects(false);
Si la app usa directamente el paquete urlfetch
subyacente en lugar de java.net
, debe especificar doNotFollowRedirects
.
Emite una solicitud HTTPS
Si usas la recuperación de URL, emite una solicitud HTTPS mediante la clase FetchOptions
en el paquete urlfetch
y llama a validateCertificate()
.
Emite una solicitud asíncrona
Las solicitudes HTTP(S) son síncronas de forma predeterminada. Para emitir una solicitud asíncrona, la aplicación debe usar el método fetchAsync()
de URLFetchService
. Con este método, se muestra una java.util.concurrent.Future<HTTPResponse>
.
Cómo emitir una solicitud dirigida a otra aplicación de App Engine
Cuando se emite una solicitud a otra app de App Engine, la tuya debe afirmar su identidad; para eso, se agrega el encabezado X-Appengine-Inbound-Appid
a la solicitud.
Si le indicas al servicio de recuperación de URL que no siga los redireccionamientos, App Engine agregará este encabezado a las solicitudes de manera automática.
Consulta Inhabilita redireccionamientos para obtener más orientación.
¿Qué sigue?
Obtén más información sobre el servicio de recuperación de URL, como los encabezados que se envían en una solicitud de recuperación de URL, en Solicitudes de salida.