Java.io.IOException: сервер вернул код ответа HTTP: 403 для URL
Я хочу загрузить mp3 файл с url: "http://upload13.music.qzone.soso.com/30671794.mp3", я всегда получал java.io.IOException: сервер возвращал код ответа HTTP: 403 для URL. Но это нормально, когда открывается URL-адрес, используя браузер. Ниже приведена часть моего кода:
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()));
Кто-нибудь может мне помочь? Спасибо заранее!
Ответы
Ответ 1
Вместо использования URLConnection
в java, если вы используете HttpURLConnection
, вы можете получить доступ к запрашиваемой веб-странице из java. Попробуйте следующий код:
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
httpcon.addRequestProperty("User-Agent", "Mozilla/4.76");
Обычная java с использованием URLConnection
не будет принята для доступа в Интернет. Чтобы получить доступ к браузеру, необходимо выполнить поиск без исключения HTTP response code : 403 for URL
Ответ 2
Вы также можете использовать
System.setProperty("http.agent", "Chrome");
это сработало для меня.
Ответ 3
Проблема задается кодом состояния. 403 означает "Запрещено" и подразумевает, что запрос был отклонен по той причине, что сервер не хочет (или не имеет возможности) указывать клиенту.
проблема лежит на стороне сервера.
Ответ 4
Когда я обращаюсь к URL-адресу с моим браузером, я также получаю 403. Возможно, вы вошли на сайт с вашим браузером?
Если вам понадобится дублировать куки файл из вашего браузера и отправить его, возможно, даже сделать больше, чтобы реплицировать вашу подпись в браузере, если сайт выполняет дополнительные проверки.
Вы можете установить cookie, добавив:
urlConn.setRequestProperty("Cookie", "foo=bar");
Где foo = bar - пара ключ-значение, которую вы найдете при поиске файла cookie сайта в своем браузере.
Ответ 5
Я бы также проверить, находится ли сервер в ресурсе, есть ACL или аналогичный на месте, мы просто решили проблему "java.io.IOException: 403" таким образом.
Бывает, что 403 ошибки очень общие, и вы не можете быть уверены в источнике, поскольку это может быть что угодно.
Ответ 6
Я добавил следующее, это сработало для меня.
conn.addRequestProperty("User-Agent", "Mozilla/4.76");