java.io.IOException: le serveur renvoie le code de réponse HTTP: 403 pour L'URL
je veux télécharger le fichier mp3 à partir de l'url: "http://upload13.music.qzone.soso.com/30671794.mp3" j'ai toujours pris du café.io.IOException: le serveur renvoie le code de réponse HTTP: 403 pour L'URL. Mais c'est ok quand ouvrir l'url en utilisant le navigateur. Ci-dessous une partie de mon code:
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
URL url = new URL(link);
URLConnection urlConn = url.openConnection();
urlConn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
String contentType = urlConn.getContentType();
System.out.println("contentType:" + contentType);
InputStream is = urlConn.getInputStream();
bis = new BufferedInputStream(is, 4 * 1024);
bos = new BufferedOutputStream(new FileOutputStream(
fileName.toString()));
N'importe qui pourrait m'aider? Merci à l'avance!
5 réponses
vous pouvez également utiliser
System.setProperty("http.agent", "Chrome");
ça a marché pour moi.
//mise à Jour
explication
parce que HttpURLConnection lit la propriété" http.l'agent de" si. Vous pouvez le lire ici: https://www.innovation.ch/java/HTTPClient/advanced_info.html
ou vous pouvez le chercher dans le code source de la classe HttpURLConnection:
String agent = java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("http.agent"));
au lieu d'utiliser URLConnection
en java, si vous utilisez HttpURLConnection
, vous devriez pouvoir accéder à la page Web demandée depuis java. Essayez le code suivant:
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
httpcon.addRequestProperty("User-Agent", "Mozilla/4.76");
java Normal utilisant urlConnection
ne sera pas accepté pour accéder à l'internet. Pour accéder au navigateur, il devra effectuer une recherche sans l'exception HTTP response code : 403 for URL
EDIT (@Mordechai): pas besoin de faire le casting, il suffit d'ajouter l'agent utilisateur.
le problème est donné par le code D'État. 403 signifie en fait "interdit" et implique que la requête a été rejetée pour une raison que le serveur ne veut pas (ou n'a aucun moyen) indiquer au client.
le problème est du côté du serveur.
quand j'accède à L'URL avec mon navigateur, j'obtiens aussi 403. Peut-être Êtes-vous connecté au site avec votre navigateur?
si c'est le cas, vous devez dupliquer le témoin de votre navigateur et l'envoyer, peut-être même en faire plus pour répliquer la signature de votre navigateur si le site fait des vérifications supplémentaires.
vous pouvez définir le cookie en ajoutant:
urlConn.setRequestProperty("Cookie", "foo=bar");
où foo=bar est la paire clé-valeur que vous trouverez lorsque vous localisez le cookie du site dans votre navigateur.
je vérifierais aussi si le serveur où se trouve la ressource a un ACL ou similaire en place, nous venons de résoudre un" java.io.IOException: 403 " issue this way.
il se trouve que 403 erreurs sont très génériques et vous ne pouvez pas vraiment être sûr de la source car il peut être juste n'importe quoi.