无法从有效的URL读取HTML内容

时间:2013-01-11 14:44:13

标签: java url io network-programming inputstream

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

3 个答案:

答案 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表示禁止 - >远程服务器阻止请求。

检查您是否需要进行身份验证以访问所需的文档,并在此情况下向其提供请求;)