Mis favoritos | Español | Acceder

Uso de java.net

Puedes utilizar java.net.URLConnection 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.

Para obtener más información sobre java.net, consulta la documentación java.net.URLConnection de Sun.

Solicitudes sencillas con direcciones URL

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 crear 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) {
            // ...
        }

Uso de HttpURLConnection

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. Para realizar la solicitud, puedes ejecutar un método del objeto URLConnection como, por ejemplo, getInputStream() o getOutputStream().

La implementación de URLConnection de App Engine no mantiene una conexión permanente con el host remoto. Cuando la aplicación establece datos de solicitud o escribe en el flujo de salida, los datos de solicitud se mantienen en la memoria. Cuando la aplicación accede a datos relacionados con la respuesta como, por ejemplo, obtener el flujo de entrada (o ejecutar el método connect()), App Engine ejecuta el servicio de extracción de URL con los datos de solicitud, obtiene la respuesta, cierra la conexión y devuelve los datos de respuesta.

El siguiente ejemplo realiza una solicitud HTTP POST a una URL con algunos datos de formulario:

import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

// ...
        String message = URLEncoder.encode("my message", "UTF-8");

        try {
            URL url = new URL("http://www.example.com/comment");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");

            OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
            writer.write("message=" + message);
            writer.close();
    
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                // OK
            } else {
                // Server returned HTTP error code.
            }
        } catch (MalformedURLException e) {
            // ...
        } catch (IOException e) {
            // ...
        }

Establecimiento de encabezados de solicitud

Para establecer un encabezado HTTP en la solicitud saliente, ejecuta el método setRequestProperty() de HttpURLConnection.

        connection.setRequestProperty("X-MyApp-Version", "2.7.3");

Redireccionamientos

De forma predeterminada, HttpURLConnection sigue redireccionamientos HTTP. El servicio de extracción de URL sigue hasta 5 redireccionamientos.

Para inhabilitar el seguimiento de los redireccionamientos, ejecuta el método setFollowRedirects() de HttpURLConnection:

        connection.setFollowRedirects(false);

Funciones de java.net que no se admiten

El servicio de extracción de URL no admite conexiones HTTP permanentes. Cuando la aplicación accede a datos de respuesta a través del objeto URLConnection, App Engine ejecuta el servicio de extracción de URL para completar la solicitud. Después de acceder a los datos de respuesta, los datos de solicitud no se pueden solicitar.

La aplicación no puede establecer tiempos de espera de conexión explícitos para la solicitud.

Funciones del API de nivel inferior

El servicio de extracción de URL limita el tamaño de los datos para una solicitud saliente y para una respuesta entrante. Cuando se utiliza el API de java.net API, los datos superiores al límite se truncan de forma silenciosa. El API de extracción de URL de nivel inferior te permite especificar si se trunca de forma silenciosa o si al superar el límite se genera una excepción.