ID da região
O REGION_ID é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
Nesta página, descrevemos como emitir solicitações HTTP(S) do aplicativo do App Engine usando o serviço de busca de URL para ambientes de execução de segunda geração.
Antes de seguir as instruções nesta página, recomendamos que você use soluções idiomáticas de linguagem para emitir solicitações HTTP(S) antes de usar o serviço de busca de URL. O principal caso de uso para utilizar a busca de URL é quando você quer emitir solicitações HTTP(S) para outro aplicativo do App Engine e declarar a identidade do aplicativo nessa solicitação.
Para mais detalhes sobre os limites de tamanho de solicitação e quais cabeçalhos são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.
Por padrão, os aplicativos executados no ambiente de execução do Java usam classes Java padrão para solicitações HTTP(S), comojava.net.HttpURLConnection. Você envia solicitações
exatamente como faria para qualquer outro aplicativo Java.
Usar classes de rede de ambiente de execução padrão
Se você usar as classes de rede Java padrão, seu aplicativo terá acesso aos seguintes recursos:
- O limite de 32 MB para os dados da solicitação não se aplica.
- suporte para HTTP 2.0.
- É compatível com todas as APIs baseadas em Google Cloud, acessadas por meio das bibliotecas de cliente do Cloud para Java.
Usar a busca de URL
Se você precisar usar o URL Fetch em um aplicativo Java, adicione a seguinte linha ao arquivo appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
Exemplo:
<xml version="1.0" encoding="utf-8">
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<!-- ... -->
<url-stream-handler>urlfetch</url-stream-handler>
<!-- ... -->
</appengine-web-app>
Emitir uma solicitação HTTP
Para usar o serviço de busca de URL para emitir solicitações HTTP(S) de saída, use o
java.net.URLConnection.
O snippet a seguir demonstra como executar uma solicitação básica HTTP GET.
O aplicativo cria um novo objeto URL e chama o método openStream() do objeto para recuperar o conteúdo nesse URL:
Para solicitações mais avançadas, use java.net.HttpURLConnection da seguinte maneira:
- Crie um novo objeto
URL. - Crie um novo objeto
URLConnectionchamando o métodoopenConnection()do objetoURL. - Crie um novo objeto
HttpURLConnectiontransmitindo seu objetoURLConnectionpara o tipo de objetoHttpURLConnection. - Defina o método de solicitação do objeto
HttpURLConnection. - Crie um stream de saída para a solicitação.
- Grave o payload da solicitação no stream.
- Feche o stream.
O snippet a seguir demonstra como usar HttpURLConnection para executar uma solicitação mais avançada e enviar dados de um formulário da Web usando uma solicitação PUT:
Definir um tempo limite de solicitação
Se você estiver usando a busca de URL, ajuste o prazo padrão para solicitações usando a configuração appengine.api.urlfetch.defaultDeadline no arquivo appengine-web.xml.
Definir cabeçalhos
Se você estiver usando a busca de URL, poderá definir um cabeçalho HTTP na solicitação de saída chamando o método setRequestProperty() do objeto HttpURLConnection. O snippet a seguir define o cabeçalho X-MyApp-Version como 2.7.3:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Desativar redirecionamentos
Por padrão,HttpURLConnection segue redirecionamentos HTTP.
Se você estiver usando a busca de URL, o serviço subjacente de busca de URL seguirá até cinco redirecionamentos por padrão. Esses redirecionamentos podem encaminhar informações confidenciais, como cabeçalhos de autorização, para o destino redirecionado. Se o aplicativo não exigir redirecionamentos HTTP, é recomendável que você os desative.
Para desativar esse comportamento, transmita o valor false para o método setInstanceFollowRedirects() do objeto HttpURLConnection:
conn.setInstanceFollowRedirects(false);
Se o aplicativo usar o pacote urlfetch subjacente diretamente em vez de java.net, ele precisará especificar doNotFollowRedirects.
Emitir uma solicitação HTTPS
Por padrão, o serviço de busca de URL subjacente valida o certificado do host que ele acessa e rejeita solicitações se o certificado não corresponder. Não é necessário proteger explicitamente sua solicitação.
Desativar a validação do certificado do host
Para desativar a validação automática do certificado do host na busca de URL,
emita uma solicitação HTTPS usando a classe FetchOptions
no pacote urlfetch e chame o método doNotValidateCertificate().
Emitir uma solicitação assíncrona
As solicitações HTTP(S) são síncronas por padrão. Para emitir uma solicitação assíncrona, seu aplicativo precisa usar o método fetchAsync() de URLFetchService. Esse método retorna um java.util.concurrent.Future<HTTPResponse>.
Emitir uma solicitação para outro app do App Engine
Ao usar a busca de URL para emitir uma solicitação a outro aplicativo do App Engine, seu
aplicativo pode declarar a identidade dele adicionando o cabeçalho X-Appengine-Inbound-Appid
à solicitação.
Se você instruir o serviço de busca de URL a não seguir redirecionamentos, o App Engine adicionará esse cabeçalho às solicitações automaticamente. Consulte Como desativar redirecionamentos para orientação sobre como desativar redirecionamentos.
A seguir
Para saber mais sobre o serviço de busca de URL, como os cabeçalhos que são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.