8
votes

Java httpurlconnection ne se connecte pas lorsque j'appelle Connect ()

J'essaie d'écrire un programme pour effectuer des tests automatisés sur mon webApp. Pour ce faire, j'ouvre une connexion en utilisant httpurlconnection.

Une des pages que j'essaye de tester effectue une redirection 302. Mon code de test ressemble à ceci: xxx

Alors, disons que Urltosend est http://www.foo.com/bar.jsp , et que cette page vous redirige vers http://www.foo.com/Quux.jsp . Mon relevé imprimeur doit imprimer http://www.foo.com/Quux.jsp , droite ?

faux.

La redirection n'arrive jamais, et elle imprime l'URL d'origine. Toutefois, si je change de sortie de la ligne de connexion.Connect () avec un appel à connexion.getreesponsecode (), il fonctionne comme par magie. xxx

Pourquoi je vois ce comportement? Est-ce que je fais quelque chose de mal?

Merci pour l'aide.


0 commentaires

5 Réponses :


-1
votes

Pourquoi n'utilisez-vous pas httpClient de Apache.


0 commentaires


19
votes

La méthode connect () crée simplement une connexion. Vous devez commettre la demande (en appelant getinputtream () , getresponsecode () ou getResponsemessage () ) pour la réponse à renvoyer et traitée.


2 commentaires

Merci, cela semble être le cas!


Merci pour ça! Essayé de comprendre pourquoi les gens émettent GetinPuttream () et tels sans jamais appeler Connect (). Vous venez de clarifier cela pour moi.



1
votes

Le Connect () La méthode est implémentée dans la classe URLConnection et n'est pas remplacé par le httpurlconnection classe.

La classe d'urlconnexion n'est pas au courant de HTTP, et ne devrait donc pas suivre la redirection HTTP, même si elle créait une connexion réelle.

Si vous voulez un comportement intrinsèque sur le protocole HTTP, vous souhaitez probablement vous tenir à des méthodes implémentées dans la classe HttpurlConnection, car la méthode GetResponsecode () est.


0 commentaires

0
votes

Ajoutez les éléments suivants dans votre Oncreate

StrictMode.ThreadPolicy policy = new StrictMode.
ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); 


0 commentaires