Comment obtenir redirigé URL et de contenu à l'aide de HttpURLConnection
Parfois mon URL de redirection vers une nouvelle page, je tiens donc à obtenir l'URL de la nouvelle page.
Voici mon code:
URL url = new URL("http://stackoverflow.com/questions/88326/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setInstanceFollowRedirects(true);
System.out.println(conn.getURL().toString());
La sortie est:
stackoverflow.com/questions/88326/does-elmah-handle-caught-exceptions-as-well
Il fonctionne bien pour le Dépassement de Pile site web, mais pour l'sears.com site, ça ne fonctionne pas.
Si nous entrons dans l'URL coup:
http://www.sears.com/search=iphone
la sortie est toujours:
Mais en fait, la page de redirection vers:
http://www.sears.com/tvs-electronics-phones-all-cell-phones/s-1231477012?keyword=iphone&autoRedirect=true&viewItems=25&redirectType=CAT_REC_PRED
Comment puis-je résoudre ce problème?
La Sears lien n'est pas une redirection HTTP:
curl --head -I http://www.sears.com/search=iphone
. C'est probablement redirige à l'aide de JavaScript.OriginalL'auteur user2105500 | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
Appelez simplement
getUrl()
surURLConnection
instance après l'appel degetInputStream()
:Si vous avez besoin de savoir si la redirection qui s'est passé avant l'obtention de son contenu, voici un exemple de code:
Ensuite, vous faites quelque chose de mal, parce que mon code fonctionne.
votre code fonctionne pour stackoverflow.com/questions/88326/, mais pas pour sear.com je suppose que peut-être sear.com n'est pas une redirection. C'est obtenir quelque chose à partir du serveur.
La Sears lien n'est pas une redirection HTTP:
curl --head -I http://www.sears.com/search=iphone
. C'est probablement redirige à l'aide de JavaScript.Cela ne fonctionne pas pour moi. Je suis en train de développer cette url skl.sh/thomasfrank11 mais j'obtiens la même url quand je fais le con.getUrl()
OriginalL'auteur syb0rg
en fait, nous pouvons utiliser HttpClient, qui nous pouvons mettre en HttpClient.followRedirect(vrai)
HttpClinent va gérer la redirection des choses.
soins à élaborer ce que vous avez fait? je suis dans une situation similaire
OriginalL'auteur user2105500
Essayer Interface htmlunit:
OriginalL'auteur lakeskysea