2013-07-09 14 views
22

jestem w stanie ustawić Auth Nagłówek na normalnych HTTPURLConnection wniosków tak:Jak ustawić (OAuth tokena) upoważnienie nagłówku żądania Android OKHTTPClient

URL url = new URL(source); 
HttpURLConnection connection = this.client.open(url); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Authorization", "Bearer " + token); 

Jest to standardowa dla HttpURLConnection. W powyższym fragmencie kodu this.client jest instancja Square's OkHTTPClient (here).

Zastanawiam się, czy istnieje specyficzny sposób ustawiania nagłówka autoryzacji? Widzę klasę OkAuthenticator, ale nie wiem, jak dokładnie ją używać/wygląda na to, że obsługuje ona tylko wyzwania związane z uwierzytelnianiem.

Z góry dziękuję za wszelkie wskazówki.

+0

Cześć, nie można rozwiązać? – CeccoCQ

Odpowiedz

17

Jeśli korzystasz z aktualnej wersji (2.0.0), można dodać nagłówek na żądanie:

Request request = new Request.Builder() 
      .url("https://api.yourapi...") 
      .header("ApiKey", "xxxxxxxx") 
      .build(); 

Zamiast:

connection.setRequestMethod("GET");  
connection.setRequestProperty("ApiKey", "xxxxxxxx"); 

Jednak dla starszych wersji (1.x), myślę, że wdrożenie, którego używasz, jest jedyną drogą do osiągnięcia tego. Jak their changelog wspomina:

Version 2.0.0-RC1 2014-05-23

Nowe typy żądań i odpowiedzi, każdy z własnym budowniczego. Istnieje również klasa RequestBody, aby zapisać treść żądania w sieci i moduł ResponseBody, aby odczytać treść odpowiedzi z sieci. Samodzielna klasa Headers oferuje pełny dostęp do nagłówków HTTP.

-1

https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/com/squareup/okhttp/recipes/Authenticate.java

client.setAuthenticator(new Authenticator() { 
    @Override public Request authenticate(Proxy proxy, Response response) { 
    System.out.println("Authenticating for response: " + response); 
    System.out.println("Challenges: " + response.challenges()); 
    String credential = Credentials.basic("jesse", "password1"); 
    return response.request().newBuilder() 
     .header("Authorization", credential) 
     .build(); 
    } 

    @Override public Request authenticateProxy(Proxy proxy, Response response) { 
    return null; // Null indicates no attempt to authenticate. 
    } 
}); 
+1

To jest złe. Dodaje token BASIC, a nie OAuth – checklist

Powiązane problemy