ID de región
El REGION_ID
es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r
se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.
En esta página se describe cómo enviar solicitudes HTTP(S) desde tu aplicación de App Engine.
De forma predeterminada, las aplicaciones que se ejecutan en el tiempo de ejecución de Java 8 usan clases Java estándar para las solicitudes HTTP(S), comojava.net.HttpURLConnection
. Envías solicitudes
como lo harías con cualquier otra aplicación Java. Para usar el comportamiento predeterminado, debes habilitar la facturación de tu aplicación. De lo contrario, recibirás las siguientes excepciones:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Usar clases de red de tiempo de ejecución estándar
Si usas las clases de red Java estándar, tu aplicación tendrá acceso a las siguientes funciones:
- Se elimina el límite de 32 MB en los datos de solicitud.
- Compatibilidad con HTTP 2.0.
- Admite todas las APIs basadas en Google Cloud a las que se puede acceder desde la biblioteca de cliente de Google Cloud para Java.
Cómo utilizar la extracción de URL
Si tienes que usar la obtención de URLs en una aplicación Java 8, añade 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>
Enviar una solicitud HTTP
Envías 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
y, a continuación, llama al método openStream()
del objeto para obtener el contenido de esa URL:
Para hacer solicitudes más avanzadas, usa java.net.HttpURLConnection
de la siguiente manera:
- Crea un objeto
URL
. - Crea un objeto
URLConnection
llamando al métodoopenConnection()
de tu objetoURL
. - Crea un objeto
HttpURLConnection
convirtiendo tu objetoURLConnection
al tipo de objetoHttpURLConnection
. - Define 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 la emisión.
En el siguiente fragmento se muestra cómo usar HttpURLConnection
para hacer una solicitud más avanzada y enviar datos desde un formulario web a través de una solicitud PUT
:
Definir un tiempo de espera de las solicitudes
Si usas URL Fetch, puedes ajustar el plazo predeterminado de las solicitudes con el ajuste appengine.api.urlfetch.defaultDeadline en el archivo appengine-web.xml
.
Definir encabezados
Si usas URL Fetch, puedes definir un encabezado HTTP en la solicitud saliente llamando al método setRequestProperty()
de tu objeto HttpURLConnection
. El siguiente fragmento de código asigna el valor 2.7.3
al encabezado X-MyApp-Version
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Inhabilitar redirecciones
De forma predeterminada,HttpURLConnection
sigue las redirecciones HTTP.
Si usas URL Fetch, el servicio subyacente de URL Fetch sigue hasta cinco redirecciones de forma predeterminada. Estas redirecciones podrían reenviar información sensible, como encabezados de autorización, al destino de la redirección. Si tu aplicación no requiere redirecciones HTTP, te recomendamos que las inhabilites.
Para inhabilitar este comportamiento, asigna el valor false
al método setInstanceFollowRedirects()
del objeto HttpURLConnection
:
conn.setInstanceFollowRedirects(false);
Si tu aplicación usa el paquete urlfetch
subyacente directamente
en lugar de java.net
, debe especificar
doNotFollowRedirects
.
Emitir una solicitud HTTPS
De forma predeterminada, el servicio URL Fetch subyacente valida el certificado del host con el que se pone en contacto y rechaza las solicitudes si el certificado no coincide. No es necesario que protejas explícitamente tu solicitud.
Inhabilitar la validación de certificados de host
Para inhabilitar la validación automática de certificados de host en URL Fetch,
envía una solicitud HTTPS con la clase FetchOptions
del paquete urlfetch
y llama a doNotValidateCertificate()
.
Enviar una solicitud asíncrona
Las solicitudes HTTP(S) son síncronas de forma predeterminada. Para enviar una solicitud asíncrona, tu aplicación debe usar el método fetchAsync()
de URLFetchService
. Este método devuelve un objeto java.util.concurrent.Future<HTTPResponse>
.
Enviar una solicitud a otra aplicación de App Engine
Cuando envíes una solicitud a otra aplicación de App Engine, tu aplicación de App Engine
debe afirmar su identidad añadiendo el encabezado X-Appengine-Inbound-Appid
a la solicitud.
Si le indicas al servicio de obtención de URLs que no siga las redirecciones, App Engine añadirá automáticamente este encabezado a las solicitudes.
Consulta Inhabilitar redirecciones para obtener información sobre cómo inhabilitar redirecciones.
Siguientes pasos
Consulta información sobre el servicio de obtención de URLs, como los encabezados que se envían en una solicitud de obtención de URLs en Solicitudes salientes.