web-dev-qa-db-fra.com

Comment modifier l'en-tête d'un HttpUrlConnection

J'essaie d'améliorer un peu le document Java Html, mais je rencontre des problèmes avec le HttpUrlConntion. Une chose est que certains serveurs bloquent une demande si l'agent utilisateur est une machine virtuelle Java. Un autre problème est que la variable HttpUrlConnection ne définit pas le champ d'en-tête Referrer ou Location. Étant donné que plusieurs sites utilisent ces champs pour vérifier que le contenu a été accédé depuis leur propre site, je suis également bloqué ici. Autant que je sache, la seule solution est de remplacer le gestionnaire d’URL du protocole HTTP. Ou est-il possible de modifier le gestionnaire HTTP par défaut?

26
tigger

Ouvrez la URL avec URL.openConnection. Eventuellement cast sur HttpURLConnection. Appelez URLConnection.setRequestProperty/addRequestProperty.

La valeur de l'en-tête User-Agent par défaut est définie à partir de la propriété système "http.agent". Le PlugIn et WebStart vous permettent de définir cette propriété.

42

Si vous utilisez Apache HttpClient pour gérer votre connectivité HTTP programmatique, vous obtenez une API extrêmement utile qui permet de créer des connexions (et de se reconnecter automatiquement en cas d'échec), en définissant des en-têtes, des publications et des méthodes de récupération du contenu renvoyé et bien plus encore. 

2
j pimmel

J'ai résolu mon problème. Nous pouvons simplement envoyer l'en-tête à application/json et passer le corps en tant qu'objet json. Cela résout simplement le problème.

0
Nayanava