O Google Code é oferecido em: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
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.
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) {
// ...
}
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) {
// ...
}
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");
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);
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.
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.