In my Android app I have to call a web service which looks like this
http://mywesite.com/demo/mob/getmenubycategory/1
I am using the volley to send the request but the result is VolleyError 401
.
I have overridden the getParams()
method to add the header, but it is not working.
Here is my code.
RequestQueue requestQueue = volleySingleton.getRequestQueue();
requestQueue.add(new JsonObjectRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e(TAG, "onResponse = \n " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "response error \n" + error.networkResponse.statusCode);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
try {
Map<String, String> map = new HashMap<String, String>();
String key = "Authorization";
String encodedString = Base64.encodeToString(String.format("%s:%s", "USERNAME", "Password").getBytes(), Base64.NO_WRAP);
String value = String.format("Basic %s", encodedString);
map.put(key, value);
return map;
} catch (Exception e) {
Log.e(TAG, "Authentication Filure" );
}
return super.getParams();
}
});
When I use my browser it shows a dialogue to enter my username and password. How can I send the username and password with the request using Volley.
For authentication, IMHO, you should override getHeaders
instead of getParams
, please try the following:
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "username:password";
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Content-Type", "application/json");
headers.put("Authorization", auth);
return headers;
}
Hope it helps!
just override this method
@Override
public Map<String, String> getHeaders() {
String username ="[email protected]";
String password = "dani3173";
String auth =new String(username + ":" + password);
byte[] data = auth.getBytes();
String base64 = Base64.encodeToString(data, Base64.NO_WRAP);
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization",base64);
headers.put("accept-language","EN");
headers.put("Content-type","application/json");
headers.put("Accept","application/json");
return headers;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With