无法在Java中的API基本身份验证中进行授权

无法在Java中的API基本身份验证中进行授权,java,api,Java,Api,我正在尝试使用Java中的Lili Social Web API进行授权。我对Java还比较陌生,但我觉得我所拥有的应该可以工作。我使用webTarget和调用生成器尝试通过标头传递授权,但不断得到未经授权的响应 我已经通过下面的AuthenticationClass将身份验证更改为Base64编码,并且可以通过hurl.it和API进行身份验证,并且可以获取数据,以便用户凭据正确无误。我附加了一个删除用户名和密码的代码示例。如果有人有任何想法,我将不胜感激 this.webTarget = t

我正在尝试使用Java中的Lili Social Web API进行授权。我对Java还比较陌生,但我觉得我所拥有的应该可以工作。我使用webTarget和调用生成器尝试通过标头传递授权,但不断得到未经授权的响应

我已经通过下面的AuthenticationClass将身份验证更改为Base64编码,并且可以通过hurl.it和API进行身份验证,并且可以获取数据,以便用户凭据正确无误。我附加了一个删除用户名和密码的代码示例。如果有人有任何想法,我将不胜感激

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);