5

만드는 법 HTTP 인증 API 사용 발리 라이브러리? 발리 라이브러리를 사용하는 안드로이드의 HTTP 인증

내가 그것을 런타임 예외 &가 널 포인터 exception..Please 당신의 선택의 발리 요청 클래스를 확장 제안

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

당신은 [droidQuery] 사용할 수 있습니다 http://bit.ly/droidQuery :

는 귀하의 요청 클래스

코드는 다음과 같이 표시됩니다에 대해 getHeaders 메소드를 오버라이드 (override) 할 필요가 이렇게하려면) 인증을 사용하여 비동기 편안한 요청을 수행합니다. 사용자 이름을 추가하기위한'AjaxOptions' [documentation] (http://phil-brown.github.io/droidQuery/doc/self/philbrown/droidQuery/AjaxOptions.html#username (java.lang.String))을보십시오. 요청에 대한 암호. – Phil

답변

4

을 제공 대해 getHeaders을 덮어 던졌습니다 .... 다음 코드를 시도(). 이 인증 정보와지도를 돌려줍니다 (headers.put ('인증', 'authinfo ...'))

9

기본 HTTP 인증은 다음 헤더과 같습니다 dXNlcjp1c2Vy는 사용자가

Authorization: Basic dXNlcjp1c2Vy 

입니다 : 암호 문자열 Base64 형식으로, "기본"이라는 단어는 인증 유형을 의미합니다.

따라서 Authorization이라는 요청 헤더를 설정해야합니다. (

@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

이 사람이 작동합니다. – omujeebr