【问题标题】:java.io.IOException: Server returned HTTP response code: 403 for URL: <url>java.io.IOException:服务器返回 HTTP 响应代码:403 用于 URL:<url>
【发布时间】:2015-03-28 23:57:20
【问题描述】:

我正在尝试检查服务是否可用并且总是返回相同的错误:

java.io.IOException:服务器返回 HTTP 响应代码:URL 为 403

互联网浏览建议必须注明“USER-AGENT”,我照做了,但错误依旧:

openConnection.addRequestProperty("User-Agent", "Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 40.0.2214.91 Safari / 537.36");

完整代码为:

url = cadenaURL + cadenaEndpoint;
URLConnection openConnection = new URL(url).openConnection();
openConnection.connect();
is = openConnection.getInputStream();
if ("gzip".equals(openConnection.getContentEncoding()))
    is = new GZIPInputStream(is);

错误在:

is = openConnection.getInputStream();

有人可以帮助我吗?

谢谢你, 问候,

【问题讨论】:

  • 尝试使用不同的字符串,例如Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0)
  • 你确定你有这个url的授权吗?
  • 服务器期望什么请求方法?一个GET?一个帖子?一个基本的 URLConnection 不会向服务器发送这样的东西 - 试试像 Apache HttpClient 这样的东西吧?
  • 403 表示您被禁止访问该页面。这可能有很多原因 - 不一定是用户代理。可能是您应该有一个来自先前交互的 cookie,但您没有发送它。
  • 如果服务拒绝GET请求,改变HTTP方式:HttpURLConnection c = openConnection = new URL(url).openConnection(); c.setRequestMethod("POST or whatever");

标签: java urlconnection


【解决方案1】:

我正在尝试检查服务是否可用

简单地说返回 403 意味着服务不可用。这就是你的答案。

您可能使用了错误的 url 并尝试连接到错误的服务。

但似乎也

is = openConnection.getInputStream();

这可能不足以连接到 HTTP 服务器。您需要正确格式化请求,需要显示更多代码以及您如何使用它,以便我们为您提供更多帮助。

【讨论】:

    【解决方案2】:

    最后我通过 HttpURLConnection 更改了 URLConnection 并且完美运行。

    谢谢

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多