O que é a maneira correta de definir os cabeçalhos em um URLConnection?
-
11-07-2019 - |
Pergunta
Meu código é como o seguinte:
URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();
É ok se eu definir os cabeçalhos antes de eu chegar a InputStream
? Será que o meu cabeçalho ser enviado, ou será que o servidor ver user-agent do URLConnection
padrão (se houver)?
Solução
Os cabeçalhos deve ser definido antes de começar o InputStream
ter qualquer efeito -. um IllegalStateException
será lançada se a conexão já está aberta ??p>
Tanto quanto o cabeçalho User-Agent
especificamente, deve ser enviada se ele tiver sido definido.
Veja a URLConnection JavaDoc.
Outras dicas
Para responder à pergunta, o código está correto. O getInputStream momento (), um HTTP GET é enviado para o servidor de destino.
Uma nota lateral em user-agent, se você não configurá-lo, URLConnection irá enviar a um padrão de qualquer maneira, que é:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
Eu aconselho contra o uso de construções de baixo nível, como URLConnection. Há uma abundância de bibliotecas para enviar solicitações HTTP, com o ser mais proeminente Apache HTTP cliente.