Qual è il modo corretto di impostare le intestazioni in una URLConnection?
-
11-07-2019 - |
Domanda
Il mio codice è simile al seguente:
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();
Va ??bene se imposto le intestazioni prima di ottenere InputStream
? Verrà inviata la mia intestazione o il server visualizzerà l'agente utente URLConnection
predefinito (se presente)? ??
Soluzione
Le intestazioni devono essere impostate prima di ottenere InputStream
per avere alcun effetto - un IllegalStateException
verrà lanciato se la connessione è già aperta .
Per quanto riguarda l'intestazione User-Agent
, dovrebbe essere inviata se è stata impostata.
Vedi URLConnection JavaDoc.
Altri suggerimenti
Per rispondere alla domanda, il codice è corretto. Nel momento in cui getInputStream (), un get HTTP viene inviato al server di destinazione.
Una nota a margine sull'utente-agente, se non lo si imposta, URLConnection invierà comunque quello predefinito, ovvero:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
Sconsiglio di usare costrutti di basso livello come URLConnection. Esistono molte librerie per l'invio di richieste HTTP, tra le quali spicca il client HTTP Apache.