我正在尝试一个简单的程序来读取给定URL中的HTML内容。我在这种情况下尝试的URL不需要任何cookie /用户名/密码,但我仍然得到 io.IOException:服务器返回HTTP响应代码:403 错误。谁能告诉我这里我做错了什么? (我知道在SO中有类似的问题,但他们没有帮助):
import java.net.*;
import java.io.*;
import java.net.MalformedURLException;
import java.io.IOException;
public class urlcont {
public static void main(String[] args) {
try {
URL u = new URL("http://www.amnesty.org/");
URLConnection uc = u.openConnection();
uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
uc.connect();
InputStream in = uc.getInputStream();
int b;
File f = new File("C:\\Users\\kausta\\Desktop\\urlcont.txt");
f.createNewFile();
OutputStream s = new FileOutputStream(f);
while ((b = in.read()) != -1) {
s.write(b);
}
}
catch (MalformedURLException e) {System.err.println(e);}
catch (IOException e) {System.err.println(e);}
}
}
答案 0 :(得分:3)
如果您可以在浏览器中获取URL,而不是通过Java获取URL,则表明他们阻止通过用户代理过滤对页面进行编程访问。尝试在连接上设置用户代理,以便您的代码在Web服务器上显示为Web浏览器。
请参阅此主题寻求帮助:What is the proper way of setting headers in a URLConnection?
答案 1 :(得分:1)
存在权限问题:
Web服务器可能会返回403 Forbidden HTTP状态代码,以响应客户端对网页或资源的请求,以指示服务器拒绝允许所请求的操作
答案 2 :(得分:0)
您没有做任何“错误”,您尝试访问的服务器阻止了您的请求,因为您无权访问该文件
Http-Error 403表示禁止 - >远程服务器阻止请求。
检查您是否需要进行身份验证以访问所需的文档,并在此情况下向其提供请求;)