Je ne dirais pas en double, car il veut le code de réponse, mais @Ajit vous devriez quand même le vérifier. Ajoutez un peu d'expérimentation et vous êtes prêt à partir.
slezica
2
Plutôt que de demander à d'autres personnes de faire votre travail à votre place. Veuillez démontrer que vous avez au moins tenté d'accomplir cette tâche par vous-même. Montrez votre code actuel et comment vous avez tenté d'accomplir cette tâche. Si vous voulez que quelqu'un fasse votre travail pour vous sans effort de votre part, vous pouvez embaucher quelqu'un et le payer.
Patrick W. McMahon
Quelle demande a-t-il fait? Il a demandé de l'aide, au lieu de faire tourner ses roues alors qu'il ne savait pas quoi faire. Il utilisait la communauté comme prévu.
Dans mon cas spécifique et avec votre méthode, j'obtiens une IOException ("Failed to authenticate with proxy") qui est généralement une erreur http 407. Existe-t-il un moyen d'obtenir une précision (le code d'erreur http) sur l'exception soulevée par la méthode getRespondeCode ()? Au fait, je sais comment gérer mon erreur, et je veux juste savoir comment différencier chaque exception (ou du moins cette exception spécifique). Merci.
grattmandu03
2
@ grattmandu03 - Je ne suis pas sûr. On dirait que vous rencontrez stackoverflow.com/questions/18900143/… (qui n'a malheureusement pas de réponse). Vous pouvez essayer d'utiliser un cadre de plus haut niveau comme HttpClient, ce qui vous donnerait probablement un peu plus de contrôle sur la façon dont vous gérez les réponses de ce genre.
Rob Hruska
Ok merci pour ta réponse. Mon travail consiste à adapter un ancien code pour qu'il fonctionne avec ce proxy, et moins de modifications plus le client comprendra mon travail. Mais je suppose que c'est pour moi (en ce moment) la seule façon de faire ce que je veux. Merci quand même.
grattmandu03
Avez-vous besoin d'appeler disconnect () dans un bloc finally?
Andrew Swan
Cela dépend probablement, je ferais des recherches. La documentation indique que l' appel de la disconnect()méthode peut fermer le socket sous-jacent si une connexion persistante est par ailleurs inactive à ce moment-là. , ce qui ne garantit pas. Les documents indiquent également Indique que d'autres demandes au serveur sont peu probables dans un avenir proche. L'appel disconnect()ne doit pas impliquer que cette HttpURLConnectioninstance peut être réutilisée pour d'autres requêtes. Si vous utilisez un InputStreampour lire des données, vous devriez close()ce flux dans un finallybloc.
Essayez ce morceau de code qui vérifie les 400 messages d'erreur
huc =(HttpURLConnection)(new URL(url).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();if(respCode >=400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}
Moyen efficace d'obtenir des données (avec une charge utile inégale) par scanner.
publicstaticString getResponseFromHttpUrl(URL url)throwsIOException{HttpURLConnection urlConnection =(HttpURLConnection) url.openConnection();try{InputStream in = urlConnection.getInputStream();Scanner scanner =newScanner(in);
scanner.useDelimiter("\\A");// Put entire content to next token string, Converts utf8 to 16, Handles buffering for different width packetsboolean hasInput = scanner.hasNext();if(hasInput){return scanner.next();}else{returnnull;}}finally{
urlConnection.disconnect();}}
Réponses:
HttpURLConnection :
Ceci n'est en aucun cas un exemple robuste; vous aurez besoin de gérer les
IOException
s et autres. Mais cela devrait vous aider à démarrer.Si vous avez besoin de quelque chose avec plus de capacités, consultez HttpClient .
la source
disconnect()
méthode peut fermer le socket sous-jacent si une connexion persistante est par ailleurs inactive à ce moment-là. , ce qui ne garantit pas. Les documents indiquent également Indique que d'autres demandes au serveur sont peu probables dans un avenir proche. L'appeldisconnect()
ne doit pas impliquer que cetteHttpURLConnection
instance peut être réutilisée pour d'autres requêtes. Si vous utilisez unInputStream
pour lire des données, vous devriezclose()
ce flux dans unfinally
bloc.la source
Vous pouvez essayer ce qui suit:
la source
la source
Cela a fonctionné pour moi:
la source
C'est ce qui a fonctionné pour moi:
J'espère que cela aide quelqu'un :)
la source
Essayez ce morceau de code qui vérifie les 400 messages d'erreur
la source
Moyen efficace d'obtenir des données (avec une charge utile inégale) par scanner.
la source
Il s'agit de la méthode statique complète, que vous pouvez adapter pour définir le temps d'attente et le code d'erreur lorsque IOException se produit:
la source
. . . . . . .
la source
vous pouvez utiliser la connexion java http / https url pour obtenir le code de réponse du site Web et d'autres informations.Voici un exemple de code.
la source
C'est une vieille question, mais permet de montrer de la manière REST (JAX-RS):
la source