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 frequentemente. 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.
Por predefinição, as aplicações executadas no tempo de execução do Java 8 usam classes Java padrão para pedidos HTTP(S), comojava.net.HttpURLConnection
. Envia pedidos
como faria para qualquer outra aplicação Java. Para usar o comportamento predefinido, tem de ativar a faturação para a sua aplicação. Caso contrário, recebe as seguintes exceções:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Usar 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 é removido.
- Suporte para HTTP 2.0.
- Suporta todas as APIs baseadas no Google Cloud acessíveis a partir da biblioteca cliente do Google Cloud para Java.
Usar a obtenção de URLs
Se tiver de usar a API URL Fetch numa app Java 8, 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
Envia um pedido HTTP de saída através dejava.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
URLConnection
chamando o métodoopenConnection()
do objetoURL
. - Crie um novo objeto
HttpURLConnection
convertendo o seu objetoURLConnection
no 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, enviando 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, pode ajustar o prazo predefinido para pedidos usando a definição appengine.api.urlfetch.defaultDeadline no ficheiro appengine-web.xml
.
Definir 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 URL, o serviço de obtenção de URL 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.
Desative a validação de certificados de anfitrião
Para desativar a validação automática de certificados de anfitriões na obtenção de URLs,
envie um pedido HTTPS através da classe FetchOptions
no pacote urlfetch
e chame doNotValidateCertificate()
.
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 URLFetchService
fetchAsync()
. Este método devolve um
java.util.concurrent.Future<HTTPResponse>
.
Emitir um pedido para outra app do App Engine
Quando emite um pedido para outra app do App Engine, a sua app do App Engine
tem de afirmar a sua 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.