2013-07-09 10 views
22

मैं इस तरह सामान्य HTTPURLConnection अनुरोध पर प्रमाणीकरण हैडर सेट करने में सक्षम हूँ पर (OAuth टोकन) प्राधिकरण हैडर कैसे निर्धारित करें:एक Android OKHTTPClient अनुरोध

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

यह HttpURLConnection लिए मानक है। उपरोक्त कोड स्निपेट this.client स्क्वायर के OkHTTPClient (here) का एक उदाहरण है।

मुझे आश्चर्य है कि OkHTTP है - ऑथ हेडर सेट करने का विशिष्ट तरीका? मैं OkAuthenticator कक्षा देखता हूं लेकिन यह स्पष्ट नहीं हूं कि इसका उपयोग कैसे किया जाए/ऐसा लगता है कि यह केवल प्रमाणीकरण चुनौतियों को संभालने में सक्षम है।

किसी भी पॉइंटर्स के लिए अग्रिम धन्यवाद। इसके बजाय का उपयोग करने का

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

: पुराने संस्करणों के लिए

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

हालांकि, (

+0

हाय, आप हल किया? – CeccoCQ

उत्तर

17

आप वर्तमान संस्करण (2.0.0) का उपयोग करते हैं, तो आप एक हैडर एक अनुरोध को जोड़ सकते हैं 1.x), मुझे लगता है कि आपके द्वारा उपयोग किए जाने वाले कार्यान्वयन को हासिल करने का एकमात्र तरीका है। their changelog के रूप में उल्लेख है:

संस्करण 2.0.0-RC1 2014-05-23

नया अनुरोध और प्रतिक्रिया प्रकार, अपने स्वयं के निर्माता के साथ प्रत्येक। नेटवर्क से अनुरोध निकाय को पढ़ने के लिए नेटवर्क को अनुरोध निकाय और एक प्रतिक्रिया बॉडी लिखने के लिए एक अनुरोधबॉडी क्लास भी है। स्टैंडअलोन हेडर क्लास 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

यह गलत है। यह एक मूल प्रमाणीकरण जोड़ता है, न कि ओथ टोकन – checklist

संबंधित मुद्दे