5

Wie zu machen Http Authentifizierung für API mit Volley-Bibliothek?Http-Authentifizierung in Android mit Volley-Bibliothek

ich den folgenden Code versucht .... es wirft Runtime Exception & Null-Zeiger-exception..Please Vorschläge liefern

String url = "Site url"; 
String host = "hostName"; 
int port = 80; 
String userName = "username"; 
String password = "Password"; 
DefaultHttpClient client = new DefaultHttpClient(); 
AuthScope authscope = new AuthScope(host, port); 
Credentials credentials = new UsernamePasswordCredentials(userName, password); 
client.getCredentialsProvider().setCredentials(authscope, credentials); 
HttpClientStack stack = new HttpClientStack(client); 
RequestQueue queue = Volley.newRequestQueue(VolleyActivity.this, stack); 
+0

Sie können [droidQuery] (http://bit.ly/droidQuery) um asynchrone, erholsame Anfragen mit Authentifizierung auszuführen. Sehen Sie sich die 'AjaxOptions' [Dokumentation] (http://phil-brown.github.io/droidQuery/doc/self/philbrown/droidQuery/AjaxOptions.html#username (java.lang.String)) zum Hinzufügen eines Benutzernamens und an Passwort zu einer Anfrage. – Phil

Antwort

4

die Volley Anfrage Klasse Ihrer Wahl erweitern und getHeaders überschreiben(). Gibt eine Karte mit den Authentifizierungsinformationen gibt (headers.put ('Authorization', 'authinfo ...'))

9

Grund Http Genehmigung sieht aus wie der nächste Header:

Authorization: Basic dXNlcjp1c2Vy 

wo dXNlcjp1c2Vy ist Ihr Benutzer : Passwort-String in Base64 Format, Wort "Basic" bedeutet die Autorisierungsart.

Sie müssen also den Anforderungsheader mit dem Namen Autorisierung festlegen.

Um dies zu tun, müssen Sie getHeaders Methode in Ihrer Anfrage Klasse

Der Code sieht wie folgt außer Kraft zu setzen:

@Override 
public Map<String, String> getHeaders() { 
    Map<String, String> params = new HashMap<String, String>(); 
    params.put(
      "Authorization", 
      String.format("Basic %s", Base64.encodeToString(
        String.format("%s:%s", "username", "password").getBytes(), Base64.DEFAULT))); 
    return params; 
} 
+0

Das funktioniert man. – omujeebr