【问题标题】:RESTFUL jetty service returning 403 error javaRESTFUL 码头服务返回 403 错误 java
【发布时间】:2019-04-18 13:42:29
【问题描述】:

当我试图从我的 java 代码中调用它时,我正面临来自 https REST 服务的 HTTP 403 Forbidden 响应。如果我在这里遗漏了什么,您能告诉我吗?

请注意,当我从任何浏览器/SOAPUI/Chrome Postman 客户端触发请求时,服务器会返回预期的数据。 使用了 2 个对等证书 - 如发送请求后来自 soapui 的 ssl 信息所示。

附上代码sn-p。 [我在代码中设置的headers取自我从成功请求中找到的请求头]

HttpsURLConnection connection = (HttpsURLConnection)new URL("https://server address").openConnection();
connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
connection.setRequestProperty("Accept-Encoding","gzip, deflate, br");
connection.setRequestProperty("User-Agent", "Apache-HttpClient/4.1.1");
connection.addRequestProperty("Connection", "Keep-Alive");
connection.addRequestProperty("Cache-Control","no-cache");
connection.setRequestMethod("GET");
connection.connect();

System.out.println("Response Code : " + connection.getResponseCode()+" "+connection.getResponseMessage());

响应代码:403 禁止

【问题讨论】:

  • 收到403 Forbidden 后,可能是您请求的网址不正确。可能是其余服务的日志文件显示了更多信息。可以发一下吗?

标签: java rest https


【解决方案1】:

您能否检查服务器 URL 是否采用 Java 可接受的格式?
有时java需要转义字符来正确识别字符串。 这个问题:What are all the escape characters?,可以帮助您检查您是否使用了这些字符中的任何一个。还要检查函数中的转换是否正确完成。
另外,如果您有更复杂的 URL,请考虑使用 java.net.URL 。
最后,检查用户代理参数Setting user agent of a java URLConnection 。

【讨论】:

    【解决方案2】:

    感谢您的回复。问题在于用于连接的会话 cookie。一旦带有 JSESSIONID 的 cookie 作为标头传递,我们就能够连接并返回响应代码 HTTP 200 的响应。再次感谢。

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 2017-12-19
      相关资源
      最近更新 更多