2013-07-09 11 views
22

üzerine (OAuth jetonu) Yetkilendirme Başlığını nasıl ayarlanır:Böyle Normal <code>HTTPURLConnection</code> istekleri Auth Başlığını ayarlamak mümkün değilim bir Android OKHTTPClient istek

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

Bu HttpURLConnection için standarttır. Yukarıdaki kod parçacığında this.client, Square'in OkHTTPClient (here) örneğidir.

Auth Üstbilgisini ayarlamak için OkHTTP özel bir yol olup olmadığını merak ediyorum? OkAuthenticator sınıfını görüyorum, ancak tam olarak nasıl kullanılacağı konusunda net değilim/sadece kimlik doğrulama zorluklarını ele alıyor gibi görünüyor.

Herhangi bir işaretçi için şimdiden teşekkür ederiz. Geçerli sürümü (2.0.0) kullanırsanız

+0

Merhaba, çözdünüz? – CeccoCQ

cevap

17

, bir isteğine bir başlık ekleyebilirsiniz:

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

kullanmak yerine:

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

Ancak eski sürümleri için (1.x), kullandığınız uygulamanın bunu başarmanın tek yolu olduğunu düşünüyorum. their changelog olarak bahseder:

Versiyon 2.0.0-RC1 2014-05-23

Yeni İstek ve Yanıt tipleri, kendi oluşturucu ile her. Ayrıca, istek gövdesini ağa yazacak bir RequestBody sınıfı ve yanıt gövdesini ağdan okumak için bir ResponseBody sınıfı da vardır. Bağımsız Headers sınıfı, HTTP başlıklarına tam erişim sunar.

-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

Bu yanlış. OAuth belirteci değil, TEMEL bir kimlik doğrulaması ekler – checklist

İlgili konular