1

我正在尝试一个简单的程序来从给定的 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);} 
}
}
4

3 回答 3

3

如果您可以在浏览器中获取 URL,但不能通过 Java 获取,那么在我看来,这表明他们正在通过用户代理过滤阻止对页面的编程访问。尝试在您的连接上设置用户代理,以便您的代码在网络服务器上显示为网络浏览器。

请参阅此线程以获取帮助:在 URLConnection 中设置标头的正确方法是什么?

于 2013-01-11T14:51:04.917 回答
1

存在权限问题:

Web 服务器可能会返回 403 Forbidden HTTP 状态代码以响应客户端对网页或资源的请求,以指示服务器拒绝允许所请求的操作

于 2013-01-11T14:46:50.053 回答
0

您没有做任何“错误”的事情,您尝试访问的服务器正在阻止您的请求,因为您无权访问该文件

Http-Error 403 表示禁止 -> 远程服务器阻止请求。

检查您是否需要提供身份验证才能访问所需的文档,并在这种情况下提供请求;)

于 2013-01-11T14:47:37.467 回答