Ada*_*dao 20 java http http-status-code-403
我想从url下载mp3文件:"http://upload13.music.qzone.soso.com/30671794.mp3",我总是得到java.io.IOException:服务器返回HTTP响应代码: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()));?
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?提前致谢!
Mon*_*uma 51
你也可以使用
System.setProperty("http.agent", "Chrome");
Run Code Online (Sandbox Code Playgroud)
它对我有用.
//更新
说明
因为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"));
小智 24
URLConnection如果你使用java,而不是在java中使用,HttpURLConnection你应该可以从java访问所请求的网页.请尝试以下代码:
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
httpcon.addRequestProperty("User-Agent", "Mozilla/4.76");
Run Code Online (Sandbox Code Playgroud)
正常的java使用urlConnection不会被接受访问互联网.要访问浏览器,它需要在没有例外的情况下执行搜索HTTP response code : 403 for URL
编辑(@Mordechai):无需进行投射,只需添加用户代理即可.
当我使用浏览器访问该 URL 时,我也会收到 403。也许您已使用浏览器登录该网站?
如果是这种情况,您需要从浏览器复制 cookie 并将其一起发送,如果网站进行任何额外检查,甚至可能需要执行更多操作来复制浏览器的签名。
您可以通过添加以下内容来设置 cookie:
urlConn.setRequestProperty("Cookie", "foo=bar");
Run Code Online (Sandbox Code Playgroud)
其中 foo=bar 是您在浏览器中找到该网站的 cookie 时会找到的键值对。
| 归档时间: |
|
| 查看次数: |
83523 次 |
| 最近记录: |