当我尝试从Java代码中调用HTTP 403时,我正面临来自HTTP REST服务的HTTP 403禁止响应。您能告诉我我是否在这里遗漏了什么吗?
请注意,当我从任何浏览器/ SOAPUI / Chrome Postman客户端触发请求时,服务器将返回预期数据。 使用2个对等证书-如发送请求后来自soapui的ssl信息所示。
已随附代码段。 [我在代码中设置的标头取自从成功请求中找到的请求标头]
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禁止
答案 0 :(得分:0)
能否请您检查服务器URL是否为Java可接受格式?
有时Java需要转义字符才能正确识别字符串。
这个问题:What are all the escape characters?可以帮助您检查是否正在使用任何这些字符。还要检查函数中的转换是否正确完成。
另外,如果您的URL更复杂,请考虑使用java.net.URL。
�最后检查用户代理参数Setting user agent of a java URLConnection。
答案 1 :(得分:0)
感谢您的回复。问题在于会话cookie用于连接。一旦带有JSESSIONID的cookie作为标头传递,我们就可以连接并使用响应代码HTTP 200获取响应。再次感谢。