O Google Code é oferecido em: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Os aplicativos do Google App Engine podem se comunicar com outros aplicativos ou acessar outros recursos da web através da obtenção de URLs. Um aplicativo pode usar o serviço de obtenção de URL para emitir solicitações HTTP e HTTPS e receber respostas. O serviço de obtenção de URL usa a infraestrutura de rede do Google para proporcionar eficiência e escalabilidade.
Você pode usar java.net.URLConnection e classes relacionadas 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. O seu aplicativo não faz conexões de soquete diretamente.
Uma forma simples de obter o conteúdo de uma página em um URL é criar um objeto java.net.URL e, em seguida, chamar o seu método openStream(). O método lida com os detalhes de criação da 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. Consulte Como usar java.net.
Um aplicativo pode obter um URL usando HTTP (normal) ou HTTPS (seguro). O URL especifica o esquema a ser usado: http://... ou https://...
O URL deve usar as portas padrão para HTTP (80) e HTTPS (443). A porta fica implícita pelo esquema, mas também pode ser mencionada no URL contanto que a porta seja o padrão para o esquema (https://...:443/). Um aplicativo não pode se conectar a uma porta arbitrária de um host remoto, nem pode usar uma porta diferente da padrão para um esquema.
A obtenção pode usar qualquer um dos seguintes métodos HTTP: GET (comum para solicitação de páginas web e de dados), POST (comum para o envio de formulários da web), PUT, HEAD e DELETE. A obtenção pode incluir cabeçalhos de solicitação HTTP e uma carga útil (corpo de uma solicitação HTTP).
O serviço de obtenção de URL usa um proxy compatível com HTTP/1.1 para obter o resultado.
Para impedir que um aplicativo cause uma recursão infinita de solicitações, um manipulador de solicitação não tem permissão para obter o seu próprio URL. Ainda é possível causar uma recursão infinita por outros meios, por isso tenha cuidado se for possível usar o seu aplicativo para obter solicitações de URLs fornecidos pelo usuário.
A chamada para o serviço de obtenção de URL é síncrona e não retornará até que o serviço receba uma resposta do host remoto. O temporizador de solicitação do seu aplicativo pode passar antes de o host remoto responder. Não há como cancelar a solicitação após a sua emissão.
Um aplicativo pode obter um URL com o método HTTPS para se conectar a servidores seguros. Os dados da solicitação e da resposta são transmitidos pela rede na forma criptografada.
O proxy usado pelo serviço de obtenção de URL não pode autenticar o host com o qual está entrando em contato. Como não há uma cadeia de confiança de certificados, o proxy aceita todos os certificados, incluindo os certificados autoassinados. O servidor proxy não consegue detectar ataques de interceptação entre o Google App Engine e o host remoto ao usar HTTPS.
Um aplicativo pode definir cabeçalhos HTTP para a solicitação de saída.
Se o cabeçalho Content-Type não for definido explicitamente ao enviar uma solicitação HTTP POST, ele será definido para x-www-form-urlencoded. Este é o tipo de conteúdo usado pelos formulários da web.
Por motivos de segurança, os cabeçalhos abaixo não podem ser modificados pelo aplicativo:
Content-LengthHostRefererVaryViaX-Forwarded-ForEsses cabeçalhos são definidos com valores precisos pelo Google App Engine, conforme apropriado. Por exemplo, o Google App Engine calcula o cabeçalho Content-Length a partir dos dados de solicitação e o adiciona à solicitação antes do envio.
O serviço de obtenção de URL retorna todos os dados de resposta, incluindo o código, o cabeçalho e o corpo da resposta.
Por padrão, se o serviço de obtenção de URL receber uma resposta com um código de redirecionamento, o serviço seguirá o redirecionamento. O serviço seguirá até 5 respostas de redirecionamento e retornará o recurso final. Você pode usar a API para informar ao serviço de obtenção de URL que não siga os redirecionamentos e apenas retorne uma resposta de redirecionamento para o aplicativo.
Por padrão, se a resposta recebida exceder o limite máximo de tamanho de resposta, ela ficará truncada. Você pode usar a API para que o serviço gere uma exceção quando a resposta exceder o tamanho máximo. (Veja abaixo o valor desse limite).
O seu aplicativo pode se conectar aos sistemas atrás do firewall da sua empresa usando o Google Secure Data Connector (SDC). Com o SDC Agent configurado na sua rede, os aplicativos do Google App Engine em execução no domínio do seu Google Apps podem autenticar com o Agent e acessar URLs na sua intranet. O SDC Agent garante que apenas os seus aplicativos podem se conectar à sua intranet, e o farão apenas para usuários conectados com uma conta do Google Apps no seu domínio.
O seu aplicativo pode acessar um URL de intranet usando o serviço de obtenção de URL. O aplicativo inclui um cabeçalho especial com uma solicitação declarando que a solicitação é destinada ao seu SDC Agent. O cabeçalho tem um nome use_intranet e um valor yes. Nenhuma outra alteração é necessária; a verificação do usuário, autenticação e a conexão segura são realizadas automaticamente.
Veja a seguir um exemplo de como usar a obtenção de URL com o cabeçalho use_intranet, usando a interface 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 obter mais informações, consulte o site do Google Secure Data Connector.
Quando o seu aplicativo está em execução no servidor de desenvolvimento no seu computador, as chamadas para o serviço de obtenção de URL são tratadas localmente. O servidor de desenvolvimento obtém URLs entrando em contato com hosts remotos diretamente do seu computador, usando qualquer configuração de rede que o seu computador estiver usando para acessar a internet.
Ao testar os recursos de obtenção de URLs do seu aplicativo, verifique se o seu computador pode acessar os hosts remotos.
Se o seu aplicativo estiver usando o Google Secure Data Connector para acessar URLs na sua intranet, teste-o enquanto estiver conectado à sua intranet atrás do firewall. Ao contrário do Google App Engine, o servidor de desenvolvimento não usa o SDC Agent para resolver URLs da intranet. Apenas o Google Apps e o Google App Engine podem autenticar com o seu SDC Agent.
Cada solicitação de obtenção de URL é computada para a cota de Chamadas da API de obtenção de URL.
Os dados enviados em uma solicitação HTTP ou HTTPS usando o serviço de obtenção de URL são computados para as seguintes cotas:
Além dessas cotas, os dados enviados em uma solicitação HTTPS também são computados para a seguinte cota:
Os dados recebidos em resposta a uma solicitação HTTP ou HTTPS usando o serviço de obtenção de URL são computados para as seguintes cotas:
Além dessas cotas, os dados recebidos em resposta a uma solicitação HTTPS também são computados para a seguinte cota:
Para obter mais informações sobre cotas, consulte Quotas (Cotas) e a seção "Quota Details" (Quota Details) do Console de administração.
Além das cotas, os seguintes limites são aplicados ao uso do serviço de obtenção de URL:
| Limite | Quantidade |
|---|---|
| tamanho da solicitação | 1 megabyte |
| tamanho da resposta | 1 megabyte |