5

Cách thực hiện Xác thực http cho API sử dụng Thư viện Volley?Http Xác thực trong android bằng cách sử dụng thư viện volley

Tôi đã thử các mã sau .... nó ném Runtime Exception & Null pointer exception..Please cung cấp gợi ý

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

Bạn có thể sử dụng [droidQuery] (http://bit.ly/droidQuery) để thực hiện yêu cầu an toàn không đồng bộ với xác thực. Xem tài liệu [AjaxOptions'] (http://phil-brown.github.io/droidQuery/doc/self/philbrown/droidQuery/AjaxOptions.html#username (java.lang.String)) để thêm tên người dùng và mật khẩu cho một yêu cầu. – Phil

Trả lời

4

Mở rộng lớp yêu cầu cú volley của sự lựa chọn của bạn và ghi đè lên getHeaders(). Quay trở lại một bản đồ với các thông tin xác thực có (headers.put ('Authorization', 'authinfo ...'))

9

Basic Http uỷ quyền trông giống như tiêu đề tiếp theo:

Authorization: Basic dXNlcjp1c2Vy 

nơi dXNlcjp1c2Vy là người dùng của bạn : chuỗi mật khẩu ở định dạng Base64, từ "Cơ bản" có nghĩa là loại ủy quyền.

Vì vậy, bạn cần đặt tiêu đề yêu cầu có tên là Ủy quyền.

Để làm điều này bạn cần phải ghi đè phương pháp getHeaders trong yêu cầu lớp của bạn

Mã sẽ trông như thế này:

@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

Người đàn ông này hoạt động. – omujeebr

Các vấn đề liên quan