无法在Java中的API基本身份验证中进行授权
我正在尝试使用Java中的Lili Social Web API进行授权。我对Java还比较陌生,但我觉得我所拥有的应该可以工作。我使用webTarget和调用生成器尝试通过标头传递授权,但不断得到未经授权的响应 我已经通过下面的AuthenticationClass将身份验证更改为Base64编码,并且可以通过hurl.it和API进行身份验证,并且可以获取数据,以便用户凭据正确无误。我附加了一个删除用户名和密码的代码示例。如果有人有任何想法,我将不胜感激无法在Java中的API基本身份验证中进行授权,java,api,Java,Api,我正在尝试使用Java中的Lili Social Web API进行授权。我对Java还比较陌生,但我觉得我所拥有的应该可以工作。我使用webTarget和调用生成器尝试通过标头传递授权,但不断得到未经授权的响应 我已经通过下面的AuthenticationClass将身份验证更改为Base64编码,并且可以通过hurl.it和API进行身份验证,并且可以获取数据,以便用户凭据正确无误。我附加了一个删除用户名和密码的代码示例。如果有人有任何想法,我将不胜感激 this.webTarget = t
this.webTarget = this.client.target("https://socialweb-analytics.lcloud.com");
WebTarget webTargetSessionAuthenticate = webTarget.path("/api/public/reports/report/conversation");
AuthenticationClass newAuth = new AuthenticationClass();
newAuth.loginValue("USERNAME", "PASSWORD");
loginValue = newAuth.encodeLogin();
Object [] starttimeParamObjects = {new String("1438351200000")};
Object [] reportformatParamObjects = {new String("csv")};
Object [] endtimeParamObjects = {new String("1439128800000")};
Object [] companykeyParamObjects = {new String("XXX")};
System.out.println(loginValue);
WebTarget webTargetSessionAuthenticateWithQueryParams = webTargetSessionAuthenticate
.queryParam("startTime", starttimeParamObjects)
.queryParam("endTime", endtimeParamObjects)
.queryParam("reportFormat", reportformatParamObjects)
.queryParam("companyKey", companykeyParamObjects);
System.out.println(webTargetSessionAuthenticateWithQueryParams);
Invocation.Builder invocationBuilderAuth =
webTargetSessionAuthenticateWithQueryParams.request();
invocationBuilderAuth.header(HttpHeaders.AUTHORIZATION, "Basic " + loginValue);
Response response = invocationBuilderAuth.get();//Entity.entity("", MediaType.TEXT_PLAIN_TYPE));
int responseStatus = response.getStatus();
System.out.println(responseStatus);
System.out.println(response.readEntity(String.class));
标题字符串“Basic”和“encoded login Value”之间需要一个空格。所以试着改变这个
invocationBuilderAuth.header(HttpHeaders.AUTHORIZATION, "Basic" + loginValue);
到
开箱即用,HttpClient不进行抢占式身份验证。如果您完全陷入困境,可以尝试使用AuthCache和BasicScheme(不与默认的基本身份验证一起使用)调用基本身份验证的变体。然后只需检查线路上发生了什么对不起,什么意思?@JordanMacey Smith确保您的基本身份验证字符串是正确的。然后使用网络分析器检查它在HTTP头中是否正常运行。
invocationBuilderAuth.header(HttpHeaders.AUTHORIZATION, "Basic " + loginValue);