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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top