2017-07-25 1 views
1

Nous appelons back-end 2 services de repos (A, B) (méthode GET), ces 2 services ont des informations d'identification (nom d'utilisateur et mot de passe), mais nous avons été confrontés un comportement étrange:Unirest est mise en cache des informations d'authentification de base

1- si nous avons appelé une première, l'authentification est réussie, mais si nous avons appelé B, nous recevons interdit (l'authentification échoue)

Ensuite, nous déployons l'application à nouveau et faire ce scénario:

2- Appel B d'abord, l'authentification est réussie, mais si nous avons appelé A, nous recevrons interdit (l'authentification a échoué):

Ceci est l'exemple de code d'appeler des services de back-end:

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

d'aide?

+0

Je vois exactement le même problème. Je me demande si nous devons appeler .shutdown() entre chaque appel? Cela pue. – Melloware

Répondre

0

Je l'ai compris. Essayez ceci ...

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