Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Las aplicaciones App Engine se pueden comunicar con otras aplicaciones o acceder a otros recursos de la Web mediante la extracción de direcciones URL. Una aplicación puede utilizar el servicio de extracción de URL para enviar solicitudes HTTP y HTTPS y para recibir respuestas. El servicio de extracción de URL utiliza la infraestructura de red de Google con fines escalables y eficaces.
Puedes utilizar java.net.URLConnection y clases relacionadas de la biblioteca estándar de Java para realizar conexiones HTTP y HTTPS desde tu aplicación Java. App Engine implementa esta interfaz a través del servicio de extracción de URL; tu aplicación no realiza conexiones de socket de forma directa.
Una forma sencilla de obtener el contenido de una página en una URL es crear un objeto java.net.URL y, a continuación, ejecutar el método openStream(). El método gestiona los detalles de ka creación de la conexión, emite una solicitud HTTP GET y recupera los datos de respuesta.
import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// ...
try {
URL url = new URL("http://www.example.com/atom.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
// ...
}
reader.close();
} catch (MalformedURLException e) {
// ...
} catch (IOException e) {
// ...
}
Para solicitudes más sofisticadas, puedes ejecutar el método openConnection() del objeto de la URL para obtener un objeto URLConnection (ya sea HttpURLConnection o HttpsURLConnection, según la URL). Puedes preparar este objeto con información adicional antes de emitir la solicitud. Consulta Uso de java.net.
Una aplicación puede extraer una URL a través de HTTP (normal) o HTTPS (segura). La URL especifica el esquema que debes utilizar: http://... o https://....
La URL debe utilizar los puertos estándar para HTTP (80) y HTTPS (443). El puerto está establecido en el esquema, pero también se puede mencionar en la URL siempre y cuando el puerto sea estándar para el esquema (https://...:443/). Una aplicación no se puede conectar con un puerto arbitrario de un host remoto, ni tampoco puede utilizar un puerto no estándar para un esquema.
La extracción puede emplear cualquiera de los siguientes métodos HTTP: GET (para la solicitud de datos y páginas web), POST (para el envío de formularios web), PUT, HEAD, y DELETE. La extracción puede incluir encabezamientos de solicitud HTTP y carga útil (cuerpo de la solicitud HTTP).
El servicio de extracción de URL utiliza un proxy compatible con HTTP/1.1 para extraer el resultado.
Para evitar que una aplicación produzca una recursión continua de solicitudes, no se permite que un controlador de solicitudes extraiga su propia URL. También es posible provocar una recursión continua de otras formas, así que ten cuidado si tu aplicación puede extraer solicitudes para URL enviadas por el usuario.
La llamada al servicio de extracción de URL es síncrona y no se devolverá hasta que el servicio reciba una respuesta del host remoto. El período de tiempo de solicitudes de tu aplicación se puede agotar antes de que el host remoto responda. No es posible cancelar la solicitud una vez que se haya enviado.
Una aplicación puede extraer una URL con el método HTTPS para conectar con servidores seguros. Los datos de solicitud y de respuesta se transmiten a través de la red de forma encriptada.
El proxy que el servicio de extracción de URL utiliza no puede autenticar el host con el que se está poniendo en contacto. Puesto que no hay ninguna cadena de confianza de certificados, el proxy acepta todos los certificados, incluidos los certificados firmados por el propio usuario. El servidor proxy no puede detectar los ataques MitM ("man in the middle") entre App Engine y el host remoto cuando utiliza HTTPS.
Una aplicación puede establecer encabezados HTTP para las solicitudes de salida.
Al enviar una solicitud POST HTTP, si no se ha establecido un encabezado Content-Type expresamente, el encabezado se establecerá en x-www-form-urlencoded. Será el tipo de contenido utilizado por los formularios web.
Por motivos de seguridad, la aplicación no puede modificar los siguientes encabezados:
Content-LengthHostRefererVaryViaX-Forwarded-ForApp Engine establece estos encabezados como valores exactos, según corresponda. Por ejemplo, App Engine calcula el encabezado Content-Length a partir de los datos de solicitud y lo añade a la solicitud antes de enviarla.
El servicio de extracción de URL devuelve todos los datos de respuesta, incluido el código, el encabezado y el cuerpo de la respuesta.
De forma predeterminada, si el servicio de extracción de URL recibe una respuesta con un código de redireccionamiento, el servicio seguirá el redireccionamiento. El servicio sigue hasta cinco respuestas de redireccionamiento, a continuación, devuelve el recurso final. Puedes utilizar el API para indicar al servicio de extracción de URL que no siga los redireccionamientos y que devuelva una respuesta de redireccionamiento a la aplicación.
De forma predeterminada, si la respuesta de entrada excede el límite máximo del tamaño de respuesta, la respuesta se truncará. Puedes utilizar el API para que el servicio genere una excepción cuando la respuesta exceda el tamaño máximo. (Consulta la información que aparece a continuación para conocer el valor de este límite).
Tu aplicación no se puede poner en contacto con los sistemas que utiliza el cortafuegos de tu empresa por medio del Google Secure Data Connector (SDC). Con el SDC Agent instalado en tu red, las aplicaciones de App Engine que se ejecutan en el dominio de Google Apps pueden autenticar con el Agent y acceder a URL de tu intranet. El SDC Agent garantiza que sólo tus aplicaciones puedan conectarse a tu intranet y únicamente en el caso de usuarios que hayan accedido a través de una cuenta de Google Apps de tu dominio.
Tu aplicación puede acceder a una URL de la intranet por medio del servicio de extracción de URL. La aplicación incluye un encabezado especial con la solicitud que indica que la solicitud está dirigida a tu SDC Agent. El encabezado tiene el nombre use_intranet y el valor yes. No se necesitan otros cambios; la verificación y autenticación de usuario y la conexión segura se controlan de forma automática.
A continuación se muestra un ejemplo de cómo utilizar el servicio de extracción de URL con el encabezado use_intranet, a través de la interfaz java.net.HttpURLConnection:
import java.net.HttpURLConnection;
import java.net.URL;
// ...
URL url = new URL("http://www.corp.example.com/sales.csv");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("use_intranet", "true");
Para obtener más información, consulta el sitio web de Google Secure Data Connector.
Cuando tu aplicación se está ejecutando en el servidor de desarrollo de tu equipo, las llamadas al servicio de extracción de URL se controlan de forma local. El servidor de desarrollo extrae las URL poniéndose en contacto con hosts remotos desde tu equipo, sea cual sea la configuración de red que esté utilizando tu equipo para acceder a Internet.
Cuando estés probando las funciones de extracción de URL de tu aplicación, asegúrate de que tu equipo pueda acceder a los hosts remotos.
Si tu aplicación está utilizando Google Secure Data Connector para acceder a URL de tu intranet, asegúrate de probar tu aplicación mientras estés conectado a la intranet a través del cortafuegos. A diferencia de App Engine, el servidor de desarrollo no utiliza SDC Agent para resolver URL de la intranet. Sólo Google Apps y App Engine pueden realizar autenticaciones con SDC Agent.
Todas las solicitudes de extracción de URL se contabilizan en la cuota de llamadas al API de extracción de URL.
Los datos enviados en una solicitud HTTP o HTTPS a través del servicio de extracción de URL se contabiliza en las siguientes cuotas:
Además de estas cuotas, los datos enviados en una solicitud HTTPS también se contabilizan en la siguiente cuota:
Los datos recibidos en respuesta a una solicitud HTTP o HTTPS por medio del servicio de extracción de URL se contabilizan en las siguientes cuotas:
Además de estas cuotas, los datos recibidos en respuesta a una solicitud HTTPS también se contabilizan en la siguiente cuota:
Para obtener más información sobre cuotas, consulta la sección Cuotas y la sección "Detalles de cuota" de la consola de administración.
Además de estas cuotas, al uso del servicio de extracción de URL se le aplican los siguientes límites:
| Límite | Valor |
|---|---|
| tamaño de la solicitud | 1 megabyte |
| tamaño de la respuesta | 1 megabyte |