Quelle est la bonne manière de définir des en-têtes dans une connexion URLConnection?

StackOverflow https://stackoverflow.com/questions/331538

  •  11-07-2019
  •  | 
  •  

Question

Mon code est comme suit:

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

Puis-je définir les en-têtes avant d’obtenir le InputStream ? Mon en-tête sera-t-il envoyé ou le serveur verra-t-il l'agent utilisateur (le cas échéant) URLConnection ?

Était-ce utile?

La solution

Les en-têtes doivent être définis avant que le InputStream ait un impact quelconque - un IllegalStateException sera levé si la connexion est déjà ouverte. .

Pour ce qui est de l'en-tête User-Agent , vous devez l'envoyer s'il a été défini.

Voir le URLConnection JavaDoc.

Autres conseils

Pour répondre à la question, le code est correct. Au moment où getInputStream (), un HTTP get est envoyé au serveur cible.

Une note sur l'agent utilisateur, si vous ne la définissez pas, URLConnection enverra quand même la valeur par défaut, à savoir:

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

Je vous déconseille d'utiliser des constructions de bas niveau telles que URLConnection. Il existe de nombreuses bibliothèques pour l'envoi de requêtes HTTP, la plus importante étant Apache HTTP Client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top