¿Cuál es la forma correcta de configurar encabezados en una URLConnection?
-
11-07-2019 - |
Pregunta
Mi código es como el siguiente:
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 configuro los encabezados antes de obtener el InputStream
? ¿Se enviará mi encabezado o el servidor verá el agente de usuario predeterminado de URLConnection
(si lo hay)?
Solución
Los encabezados deben configurarse antes de que el InputStream
tenga algún efecto: se lanzará una IllegalStateException
si la conexión ya está abierta .
En cuanto al encabezado User-Agent
específicamente, debe enviarse si se ha configurado.
Consulte URLConnection JavaDoc.
Otros consejos
Para responder la pregunta, el código es correcto. En el momento en que getInputStream (), se envía un get HTTP al servidor de destino.
Una nota al margen sobre el agente de usuario, si no la configura, URLConnection enviará la predeterminada de todos modos, que es:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
Aconsejaría contra el uso de construcciones de bajo nivel como URLConnection. Hay muchas bibliotecas para enviar solicitudes HTTP, la más destacada es el Cliente Apache HTTP.