2008-12-01 8 views
18

Mi código es el siguiente:¿Cuál es la forma correcta de establecer encabezados en un URLConnection?

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(); 

¿Está bien si me puse las cabeceras antes de que consiga la InputStream? ¿Se enviará mi encabezado o el servidor verá el user-agent predeterminado de URLConnection (si existe)?

Respuesta

20

Las cabeceras deben pueden establecer antes de conseguir la InputStream tener ningún efecto - un IllegalStateException serán lanzados si la conexión ya está abierta.

En cuanto al encabezado User-Agent específicamente, se debe enviar si se ha configurado.

Ver el URLConnection JavaDoc.

+1

Este enlace está roto. – Fabii

4

Para responder a la pregunta, el código es correcto. En el momento getInputStream(), se envía un get HTTP al servidor de destino.

Una nota lateral de agente de usuario, si no se establece que, URLConnection enviará el valor por defecto de todos modos, que es:

User-Agent: Java/1.6.0_24 (varies depending on your java version) 
-2

aconsejaría contra el uso de construcciones de bajo nivel, como URLConnection. Hay muchas bibliotecas para enviar solicitudes HTTP, siendo la más destacada Apache HTTP Client.

+0

(debe comentar, no responde a la pregunta) – BadZen

+0

Apache HTTP Client no está recomendado y desaprobado en Android Framework. Google recomienda el uso de HttpURLConnection. – afollestad

Cuestiones relacionadas