My favorites | Português | Sign in

Como usar o java.net

Você pode usar o java.net.URLConnection da biblioteca Java padrão para fazer conexões HTTP e HTTPS a partir do seu aplicativo Java. O Google App Engine implementa essa interface usando o serviço de obtenção de URL.

Para obter mais informações sobre o java.net, consulte a documentação do java.net.URLConnection da Sun.

Solicitações simples com URLs

Uma forma simples de conseguir o conteúdo de uma página em um URL é criando um objeto java.net.URL e, em seguida, chamando o método openStream(). O método lida com os detalhes de criar a conexão, emitindo uma solicitação HTTP GET e recuperando os dados da resposta.

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

Como usar o HttpURLConnection

Para solicitações mais sofisticadas, chame o método openConnection() do objeto do URL para obter um objeto URLConnection (HttpURLConnection ou HttpsURLConnection, dependendo do URL). Você pode preparar esse objeto com informações adicionais antes de emitir a solicitação. Para fazer a solicitação, chame um método no URLConnection, como getInputStream() ou getOutputStream().

A implementação do Google App Engine do URLConnection não mantém uma conexão persistente com o host remoto. Quando o aplicativo define os dados da solicitação ou grava o fluxo de saída, os dados da solicitação são mantidos na memória. Quando o aplicativo acessa quaisquer dados sobre a resposta, como por exemplo, a obtenção do fluxo de entrada (ou a chamada do método connect()), o Google App Engine chama o serviço de obtenção de URL com os dados da solicitação, obtém a resposta, encerra a conexão e retorna os dados da resposta.

O exemplo abaixo faz uma solicitação HTTP POST a um URL com alguns dados do formulário:

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

Como definir os cabeçalhos das solicitações

Para definir um cabeçalho HTTP na solicitação de saída, chame o método setRequestProperty() do HttpURLConnection.

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

Redirecionamentos

Por padrão, HttpURLConnection seguirá os redirecionamentos HTTP. O serviço de obtenção de URL seguirá até cinco redirecionamentos.

Para desativar o seguimento dos redirecionamentos, chame o método setFollowRedirects() do HttpURLConnection:

        connection.setFollowRedirects(false);

Recursos do java.net não suportados

O serviço de obtenção de URL não oferece suporte às conexões HTTP persistentes. Quando o aplicativo acessa os dados de resposta usando o objeto URLConnection, o Google App Engine chama o serviço de obtenção de URL para concluir a solicitação. Depois de acessar os dados de resposta, os dados de solicitação não podem ser modificados.

O aplicativo não pode definir o tempo limite de conexão explícito para a solicitação.

Recursos da API de nível inferior

O serviço de obtenção de URL limita o tamanho dos dados de uma solicitação de saída e de uma resposta de entrada. Ao usar a API do java.net, os dados maiores que o limite são truncados silenciosamente. A API de nível inferior de obtenção de URL permite especificar se o truncamento acontece silenciosamente ou se exceder um limite gera uma exceção.