【问题标题】:How can I prevent a 403 HTTP error code in Java?如何防止 Java 中的 403 HTTP 错误代码?
【发布时间】:2014-02-04 19:51:43
【问题描述】:

我使用简单的代码来获取http://www.ip-adress.com 的 html,但它显示错误 http 代码 403。 我在程序中的其他网站(如google.com)中尝试它,它可以工作。我也可以在浏览中打开www.ip-adress.com,为什么我不能在java程序中使用它。

 public class urlconnection
{
  public static void main(String[] args)
 {
    StringBuffer document = new StringBuffer();
    try 
    {
        URL url = new URL("http://www.ip-adress.com");
        URLConnection conn = url.openConnection();
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = null;
        while ((line = reader.readLine()) != null)
        document.append(line + " ");
        reader.close();
    }
    catch (MalformedURLException e) 
    {
        e.printStackTrace(); 
    }
    catch (IOException e)
    {
        e.printStackTrace(); 
    }
    System.out.println(document.toString());
}
}



java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.ip-adress.com/

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at urlconnection.main(urlconnection.java:14)

【问题讨论】:

  • 你检查你的代理配置了吗?
  • 你搜索过 403 是什么意思吗?

标签: java http http-headers


【解决方案1】:

这是你需要的行

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");

参考this

【讨论】:

    【解决方案2】:

    网络服务器可以检测到您实际上并未尝试通过 HTTP 访问它,因此它会拒绝您的请求。有一些方法可以伪造它来欺骗服务器认为你是浏览器。

    【讨论】:

      【解决方案3】:

      我想该站点会检查用户代理标头并阻止它似乎是“机器人”。您需要模仿普通浏览器。检查此解决方案Setting user agent of a java URLConnection 或尝试使用公共 http 客户端并设置用户代理。

      【讨论】:

        【解决方案4】:

        我认为这根本不是 Java 问题。您正在做正确的事情来建立 HTTP 连接,而服务器通过使用 403 响应响应您的请求,从它的角度来看正在做“正确的事情”。

        让我们明确一点 - 您得到的响应是由于目标网络服务器正在使用的任何逻辑。

        因此,如果您要问“我如何修改我的请求,以便 http://www.ip-address.com 返回 200 响应”,那么人们可能会想出让服务器满意的解决方法。但这是一个特定于主机的过程;您的 Java 代码可以说是正确的,尽管它应该具有更好的错误处理能力,因为您可以总是得到非 2xx 响应。

        【讨论】:

          【解决方案5】:

          尝试将 Connection User-Agent 更改为浏览器之类的东西,大多数时候我使用 Mozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1

          【讨论】:

            猜你喜欢
            • 2018-11-17
            • 2021-09-29
            • 1970-01-01
            • 2016-05-22
            • 2011-12-14
            • 1970-01-01
            • 1970-01-01
            • 2011-07-12
            • 2021-12-31
            相关资源
            最近更新 更多