ID da região
O REGION_ID é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados com frequência. Para apps criadas após
fevereiro de 2020, REGION_ID.r está incluído nos
URLs do App Engine. Para apps existentes criadas antes desta data, o
ID da região é opcional no URL.
Saiba mais acerca dos IDs de regiões.
Esta página descreve como emitir pedidos HTTP(S) a partir da sua app do App Engine usando o serviço URL Fetch para runtimes de segunda geração.
Antes de seguir as instruções nesta página, recomendamos que use soluções idiomáticas para emitir pedidos HTTP(S) antes de usar o serviço URL Fetch. O principal exemplo de utilização da obtenção de URLs é quando quer emitir pedidos HTTP(S) para outra app do App Engine e afirmar a identidade da sua app nesse pedido.
Para ver detalhes sobre os limites de tamanho dos pedidos e os cabeçalhos enviados num pedido de obtenção de URL, consulte o artigo Pedidos de saída.
Por predefinição, as aplicações executadas no tempo de execução Java usam classes Java padrão para pedidos HTTP(S), comojava.net.HttpURLConnection. Envia pedidos
como faria para qualquer outra aplicação Java.
Use classes de rede de tempo de execução padrão
Se usar as classes de rede Java padrão, a sua app tem acesso às seguintes funcionalidades:
- O limite de 32 MB nos dados de pedidos não se aplica.
- Suporte para HTTP 2.0.
- Suporta todas as APIs baseadas em Google Cloudacessíveis a partir das bibliotecas cliente da Google Cloud para Java.
Use a obtenção de URLs
Se tiver de usar a obtenção de URLs numa app Java, adicione a seguinte linha ao ficheiro appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
Por 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 um pedido HTTP
Para usar o serviço URL Fetch para emitir pedidos HTTP(S) de saída, use ojava.net.URLConnection.
O fragmento seguinte demonstra como fazer um pedido HTTP GET básico.
A aplicação cria um novo objeto URL e, em seguida, chama o método openStream() do objeto para obter o conteúdo nesse URL:
Para pedidos mais avançados, use java.net.HttpURLConnection da seguinte forma:
- Crie um novo objeto
URL. - Crie um novo objeto
URLConnectionchamando o métodoopenConnection()do objetoURL. - Crie um novo objeto
HttpURLConnectionconvertendo o seu objetoURLConnectionno tipo de objetoHttpURLConnection. - Defina o método de pedido do objeto
HttpURLConnection. - Crie uma stream de saída para o pedido.
- Escreva o payload do pedido na stream.
- Feche a stream.
O fragmento seguinte demonstra como usar HttpURLConnection para fazer um pedido mais avançado e enviar dados de um formulário Web através de um pedido PUT:
Defina um limite de tempo do pedido
Se estiver a usar a obtenção de URLs, ajuste o prazo predefinido para pedidos usando a definição appengine.api.urlfetch.defaultDeadline no ficheiro appengine-web.xml.
Defina cabeçalhos
Se estiver a usar a obtenção de URLs, pode definir um cabeçalho HTTP no pedido de saída,
chamando o método setRequestProperty() do objeto HttpURLConnection. O fragmento seguinte define o cabeçalho X-MyApp-Version como 2.7.3:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Desative os redirecionamentos
Por predefinição, oHttpURLConnection segue os redirecionamentos HTTP.
Se estiver a usar a obtenção de URLs, o serviço de obtenção de URLs subjacente segue até cinco redirecionamentos por predefinição. Estes redirecionamentos podem encaminhar informações confidenciais, como cabeçalhos de autorização, para o destino redirecionado. Se a sua app não requerer redirecionamentos HTTP, recomendamos que os desative.
Para desativar este comportamento, transmita o valor false ao método setInstanceFollowRedirects() do objeto HttpURLConnection:
conn.setInstanceFollowRedirects(false);
Se a sua app usar o pacote urlfetch subjacente diretamente
em vez de java.net, tem de especificar
doNotFollowRedirects.
Emitir um pedido HTTPS
Por predefinição, o serviço URL Fetch subjacente valida o certificado do anfitrião que contacta e rejeita pedidos se o certificado não corresponder. Não precisa de proteger explicitamente o seu pedido.
Emita um pedido assíncrono
Os pedidos HTTP(S) são síncronos por predefinição. Para emitir um pedido assíncrono, a sua aplicação tem de usar o método URLFetchServicefetchAsync(). Este método devolve um java.util.concurrent.Future<HTTPResponse>.
Emitir um pedido para outra app do App Engine
Quando usa a obtenção de URLs para emitir um pedido a outra app do App Engine, a sua app pode afirmar a respetiva identidade adicionando o cabeçalho X-Appengine-Inbound-Appid ao pedido.
Se instruir o serviço URL Fetch para não seguir redirecionamentos, o App Engine adiciona este cabeçalho aos pedidos automaticamente. Consulte o artigo Desativar redirecionamentos para obter orientações sobre como desativar redirecionamentos.
O que se segue?
Saiba mais sobre o serviço de obtenção de URL, como os cabeçalhos que são enviados num pedido de obtenção de URL em Pedidos de saída.