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!

11
demandé sur Matt Ball 2010-10-06 07:45:42

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"));

26
répondu Montezuma 2018-08-10 10:53:31

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.

21
répondu Saratha 2018-03-08 22:14:07

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.

4
répondu arthur 2011-07-23 19:30:03

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.

2
répondu Alexander Sagen 2010-10-06 03:50:18

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.

0
répondu runlevel0 2014-04-24 11:19:13