java.io.IOException: 服务器返回 HTTP 响应代码: 403 for URL

2022-09-01 17:56:01

我想从url下载mp3文件:“http://upload13.music.qzone.soso.com/30671794.mp3”,我总是得到java.io.IOException:服务器返回HTTP响应代码:URL的403。但是使用浏览器打开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

您还可以使用

System.setProperty("http.agent", "Chrome");

它对我有用。

更新

解释

因为 HttpURLConnection 读取属性“http.agent”(如果已设置)。你可以在这里阅读:https://www.innovation.ch/java/HTTPClient/advanced_info.html

或者,您可以在 HttpURLConnection 类的源代码中查找它:

String agent = java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("http.agent"));


答案 2

而不是在java中使用,如果你使用,你应该可以从java访问请求的网页。请尝试以下代码:URLConnectionHttpURLConnection

 HttpURLConnection httpcon = (HttpURLConnection) url.openConnection(); 
 httpcon.addRequestProperty("User-Agent", "Mozilla/4.76"); 

使用正常的java将不被接受访问互联网。要访问浏览器,它需要执行搜索而没有异常urlConnectionHTTP response code : 403 for URL


编辑(@Mordechai):无需进行转换,只需添加用户代理即可。


推荐