2017-07-25 68 views
1

我们呼吁后端2 REST服务(A,B)(GET方法),这两个服务有不同的凭据(用户名和密码),但我们面临着奇怪的行为:Unirest是缓存的基本认证信息

1-如果我们称为第一,认证成功,但如果我们叫B,我们将在收到禁止(认证失败)

然后我们再部署应用程序并执行这样的场景:

2-呼叫B首先,认证是成功的,但是如果我们叫A,我们会收到禁止的(认证失败):

这是调用后端服务的示例代码:

HttpResponse<String> resp; 
     try { 
      resp = Unirest.get(url) 
        .basicAuth(username,password).asString(); 
      String jsonstr = resp.getBody(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      throw e; 
     } 

任何帮助吗?

+0

我看到完全相同的问题。我想知道是否必须在每次调用之间调用.shutdown()?那太臭了。 – Melloware

回答

0

我想通了。试试这个...

final CredentialsProvider provider = new BasicCredentialsProvider(); 
final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(getUsername(), getPassword()); 
provider.setCredentials(AuthScope.ANY, credentials); 
final HttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); 

Unirest.setHttpClient(httpClient); 
response = Unirest.get(url).queryString(queryParameters).asJson();