2013-04-23 15 views
5

Używam wbudowany httpclient do wydania kwerendy "get" do usługi zewnętrznej, która wymaga uwierzytelnienia. Dokładniej, próbuję przesłać zapytania z mojej usługi. Jak przekazać dane uwierzytelniające użytkownika w żądaniu? Chcę używać podstawowego uwierzytelniania zamiast zajmować się tokenami uwierzytelniania.http podstawowy auth z vert.x

+0

httpclient to framework Dżakarta i istnieje kilka innych nazywa to samo. Jest wbudowana obsługa połączenia URLConnection. Co masz na myśli? –

+0

Mam na myśli wbudowany httpclinet w vert.x, który jest tworzony przez: HttpClient httpClient = vertx.createHttpClient(); – user2312682

Odpowiedz

15

Podstawowy auth dotyczy nagłówka autoryzacji.

Powinieneś dodać ten nagłówek z wartością złożoną z "basic" (uwaga na puste) i twój login: pass (oddzielony dwukropkiem) zakodowany w base64. Jest to bezpieczne tylko w przypadku korzystania z HTTPS.

Oto jak się to odbywa w vert.x:

HttpClient client = vertx.createHttpClient().setSSL(true) 
    .setTrustAll(true) //You may not want to trust them all 
    .setHost("api.myawesomeapi.com") 
    .setPort(443); 
HttpClientRequest clientRequest = client.get("/"+action+"/?"+params, new Handler<HttpClientResponse>() { 
      public void handle(final HttpClientResponse response) { 
       if (response.statusCode==200){ 
        // It worked ! 
       } else { 
        // Oops 
       } 
      } 
     }); 

clientRequest.putHeader(HttpHeaders.Names.AUTHORIZATION, "Basic "+base64key); 

Tutaj mam już base64key, ale gdybym miał go utworzyć, chciałbym użyć czegoś takiego:

base64key = Base64.encodeBytes(new StringBuilder(apiKey).append(":").append(secretKey).toString().getBytes(), Base64.DONT_BREAK_LINES); 

Jeśli używasz POST zamiast GET, nie zapomnij dodać wymagane nagłówki:

clientRequest.putHeader(HttpHeaders.Names.CONTENT_LENGTH, String.valueOf(params.getBytes().length)) 
     .putHeader(HttpHeaders.Names.CONTENT_TYPE, "application/x-www-form-urlencoded") 
     .write(params); 

mam nadzieję, że pomoże

Hugo

Powiązane problemy