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)?

Foi útil?

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top