2016-03-18 5 views
0

implementieren Ich habe Code Zünder REST API auf der Serverseite verwendet. Ich habe die Digest-Authentifizierung für die REST-API festgelegt. Ich habe volley-Bibliothek verwendet, um die http-Anfrage auf Client- (android-) Seite zu machen und die jsonObjectRequest zu verwenden, um die URL aufzurufen. Wenn also jemand weiß, wie man die Header für die Digest-Authentifizierung in die Volley-Anfrage legt, dann bitte hilf mir dabei.Wie Digest Authentifizierung mit Volley in Android

+0

Bitte überprüfen http://stackoverflow.com/questions/17049473/how-to-set -custom-header-in-volley-anfrage – trebron

+0

@trebron Danke..aber die Lösungen in dem angegebenen Link sind nicht hilfreich für mich..Wollen Sie weitere Details über das Problem, das ich konfrontiert bin? .. so dass Sie kann mir helfen, dies zu lösen ... – Shashikant

+0

Wenn Sie benutzerdefinierte Header senden möchten, müssen Sie getHeaders() in Ihrem JsonObjectRequest überschreiben. Bitte geben Sie einen Quellcode an, damit ich weitere Erläuterungen geben kann. – trebron

Antwort

0
JSONObject paramsVolley = new JSONObject(); 
try { 
    paramsVolley.put("u_id", 4); 
} catch (JSONException e1) { 
    e1.printStackTrace(); 
} 
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,  "http://admin:[email protected]/apiuser/getuserdet/format/json", paramsVolley, new Response.Listener<JSONObject>() { 
    @Override 
    public void onResponse(JSONObject response) { 
     Toast.makeText(getApplication(), response.toString(), Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     Map<String, String> headers = new HashMap<>(); 
     String credentials = "admin:1234"; 
     String auth = "Digest " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); 
     headers.put("Content-Type", "application/json"); 
     headers.put("Authorization", auth); 
     return headers; 
    } 
    }, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError e) { 
     Toast.makeText(getApplicationContext(), "Error Occurred",Toast.LENGTH_SHORT).show(); 
    } 
}); 
GoGreen.getInstance().addToRequestQueue(jsonObjReq, tag_update_det); 
+0

@ Trebron..das ist mein Code..URL ist das http://greentin.com/apiuser/getuserdet/format/json..ich habe vergessen, den Admin zu entfernen: 1234 von der URL ... – Shashikant

+0

Und welche Art von VolleyError erhältst du? – trebron

+0

Unerwarteter Antwortcode 401 – Shashikant

0

Ich habe noch nie jene HttpDigestStack Implementierung überprüft, aber ich werde wahrscheinlich mit so etwas wie folgen beginnen:

final String userName = "user"; 
final String password = "password"; 

// Instantiate the cache 
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap 

DigestAuthenticator auth = new DigestAuthenticator() { 
      @Override 
      protected PasswordAuthentication requestPasswordAuthentication(String rHost, InetAddress rAddr, int rPort, String rProtocol, String realm, String scheme, URL rURL, Authenticator.RequestorType reqType) { 
       return new PasswordAuthentication(userName, password.toCharArray()); 
      } 
     }; 

HurlStack.UrlRewriter urlRewriter = new HurlStack.UrlRewriter() { 

    String rewriteUrl(String url) { 
    return url; 
    } 
}; 

HttpDigestStack digestStack = new HttpDigestStack(auth, urlRewriter); 

// Set up the network to use HttpURLConnection as the HTTP client. 
Network network = new BasicNetwork(digestStack); 

// Instantiate the RequestQueue with the cache and network. 
RequestQueue mRequestQueue = new RequestQueue(cache, network); 
+0

Vielen Dank .. Ich werde das versuchen ... – Shashikant