5

Jak wykonać uwierzytelnianie HTTP dla interfejsu API przy użyciu Volley library?Uwierzytelnianie HTTP w systemie Android przy użyciu biblioteki salwy

Próbowałem następujący kod .... to rzuca Runtime Exception & Null pointer exception..Please zasugeruje

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

Można użyć [droidQuery] (http://bit.ly/droidQuery) do wykonywania asynchronicznych żądań z uwierzytelnianiem. Spójrz na 'AjaxOptions' [documentation] (http://phil-brown.github.io/droidQuery/doc/self/philbrown/droidQuery/AjaxOptions.html#username (java.lang.String)) w celu dodania nazwy użytkownika i hasło do żądania. – Phil

Odpowiedz

4

Rozszerz volley klasę żądania wyboru i nadpisać getHeaders(). Zwraca mapę z informacji uwierzytelniania tam (headers.put ('Zezwolenie', 'AuthInfo ...'))

9
upoważnienie

Podstawowe HTTP wygląda następnego nagłówka:

Authorization: Basic dXNlcjp1c2Vy 

gdzie dXNlcjp1c2Vy jest Twój użytkownik : ciąg znaków w formacie Base64, słowo "Basic" oznacza rodzaj autoryzacji.

Musisz więc ustawić nagłówek żądania o nazwie Autoryzacja.

Aby to zrobić, trzeba zastąpić metodę getHeaders w swojej klasie żądanie

Kod będzie wyglądać następująco:

@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

To działa człowiek. – omujeebr

Powiązane problemy