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.UnknownHostExceptionjava.net.SocketTimeoutExceptionjava.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
URLnuevo. - Crea un objeto
URLConnectionnuevo mediante una llamada al métodoopenConnection()del objetoURL. - Crea un objeto
HttpURLConnectionnuevo mediante la conversión del objetoURLConnectional 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:
Cómo establecer un tiempo de espera para la 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 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
De forma predeterminada, el servicio de recuperación de URL subyacente valida el certificado del host al que se conecta y rechaza las solicitudes si el certificado no coincide. No es necesario que protejas tu solicitud de forma explícita.
Inhabilita la validación del certificado del host
Para inhabilitar la validación automática del certificado del host en la recuperación de URL, emite una solicitud HTTPS con la clase FetchOptions en el paquete urlfetch y llama a doNotValidateCertificate().
Emite una solicitud asíncrona
Las solicitudes HTTP(S) son síncronas de manera 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.