Jira Rest Java 客户端:“403 Forbidden”错误
Jira Rest Java Client: "403 Forbidden" error
几天来我一直在尝试连接到 Jira 服务器(使用基本身份验证),但无法正常工作。我总是收到“403 Forbidden”错误。同时我很绝望,希望有人能帮助我。
示例代码如下所示:
public class Main
{
private static final String JIRA_URL = "https://jira.mycompany.com/rest/api/latest/project/";
private static String auth = new String(Base64.encode("admin" + ":" + "password"));
private static String headerAuthorization = "Authorization";
final static String headerAuthorizationValue = "Basic " + auth;
final static String headerType = "application/json";
public static void main(String[] args) throws Exception
{
Client client = Client.create();
WebResource webResource = client.resource(JIRA_URL);
ClientResponse response = webResource.header(headerAuthorization,headerAuthorizationValue).type(headerType).accept("application/json").get(ClientResponse.class);
int statusCode = response.getStatus();
if (statusCode == 401) {
throw new AuthenticationException("401 Invalid Username or Password");
} else if (statusCode == 403) {
throw new AuthenticationException("403 Forbidden");
}
}
}
如前所述,我总是收到 403 错误。 :( 如果我在浏览器中输入 URL,它可以正常工作,所以我完全不知所措。谁能看出我做错了什么?非常感谢您的帮助!
编辑 2020-05-03
根据 PiRocks 的建议,我曾经尝试比较调用。
浏览器调用:
Header:
对我来说看起来是一样的,但不幸的是我不知道 header 中的很多细节。我的代码有什么不同吗?
邮递员:
此外,我试图向 Postman 提出请求。那也行。
授权类型也是 "Basic Auth"。
如您所见,我收到了 200 状态码,一切正常。在我看来,请求与我的代码相同,不是吗?
此外,我尝试了 Postman 的代码,但奇怪的是,即使使用此代码,我也会收到 403 错误。
还有其他人有什么想法吗?我 运行 想不出可能出了什么问题...:(
我发现了错误。虽然我通过 VPN 连接到公司网络,但我必须设置代理:
System.getProperties().put("https.proxyHost", proxyHost);
System.getProperties().put("https.proxyPort", proxyPort);
System.getProperties().put("https.proxyUser", proxyUser);
System.getProperties().put("https.proxyPassword", proxyPassword);
System.getProperties().put("https.proxySet", "true");
现在一切正常。这个愚蠢的简单错误让我损失了很多天...
几天来我一直在尝试连接到 Jira 服务器(使用基本身份验证),但无法正常工作。我总是收到“403 Forbidden”错误。同时我很绝望,希望有人能帮助我。
示例代码如下所示:
public class Main
{
private static final String JIRA_URL = "https://jira.mycompany.com/rest/api/latest/project/";
private static String auth = new String(Base64.encode("admin" + ":" + "password"));
private static String headerAuthorization = "Authorization";
final static String headerAuthorizationValue = "Basic " + auth;
final static String headerType = "application/json";
public static void main(String[] args) throws Exception
{
Client client = Client.create();
WebResource webResource = client.resource(JIRA_URL);
ClientResponse response = webResource.header(headerAuthorization,headerAuthorizationValue).type(headerType).accept("application/json").get(ClientResponse.class);
int statusCode = response.getStatus();
if (statusCode == 401) {
throw new AuthenticationException("401 Invalid Username or Password");
} else if (statusCode == 403) {
throw new AuthenticationException("403 Forbidden");
}
}
}
如前所述,我总是收到 403 错误。 :( 如果我在浏览器中输入 URL,它可以正常工作,所以我完全不知所措。谁能看出我做错了什么?非常感谢您的帮助!
编辑 2020-05-03
根据 PiRocks 的建议,我曾经尝试比较调用。
浏览器调用:
Header:
对我来说看起来是一样的,但不幸的是我不知道 header 中的很多细节。我的代码有什么不同吗?
邮递员:
此外,我试图向 Postman 提出请求。那也行。
授权类型也是 "Basic Auth"。
如您所见,我收到了 200 状态码,一切正常。在我看来,请求与我的代码相同,不是吗?
此外,我尝试了 Postman 的代码,但奇怪的是,即使使用此代码,我也会收到 403 错误。
还有其他人有什么想法吗?我 运行 想不出可能出了什么问题...:(
我发现了错误。虽然我通过 VPN 连接到公司网络,但我必须设置代理:
System.getProperties().put("https.proxyHost", proxyHost);
System.getProperties().put("https.proxyPort", proxyPort);
System.getProperties().put("https.proxyUser", proxyUser);
System.getProperties().put("https.proxyPassword", proxyPassword);
System.getProperties().put("https.proxySet", "true");
现在一切正常。这个愚蠢的简单错误让我损失了很多天...