Я пытаюсь отправить GET-запрос на API Wordpress rest из моего приложения для Android.В почтальоне я отправляю запрос POST и GET, который работал, но когда я отправляю запрос с теми же заголовками, я получаю com.android.volley.AuthFailureError .
Вот мой код
public void getSlides(final onSlideReceived onSlideReceived) {
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,
BASE_URL + "slider", null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Toast.makeText(context, response.toString(), Toast.LENGTH_LONG).show();
Log.i(ITAGSLIDE, "onResponse: "+response);
onSlideReceived.onReceived(slides);
}
} , new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
Log.e(ETAGSLIDE, "onErrorResponse: "+error.toString() );
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers = new HashMap<>();
Map<String,String> params = new HashMap<>();
params.put("oauth_consumer_key",CONSUMER_KEY);
params.put("oauth_nonce", OAUTH_NONCE);
params.put("oauth_signature_method",OAUTH_SIGNATURE_METHOD);
params.put("oauth_timestamp",OAUTH_TIMESTAMP);
params.put("oauth_token", OAUTH_TOKEN);
params.put("oauth_version",OAUTH_VERSION);
String encodedParams = mapToStringAnd(params);
String string_to_sign = "";
try {
string_to_sign = (new StringBuilder("GET&"))
.append(URLEncoder.encode(
BASE_URL+"slider", "utf-8")).append("&")
.append(URLEncoder.encode(encodedParams, "utf-8")).toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Log.d("string to sign", string_to_sign);
try {
Mac mac = Mac.getInstance("HMAC-SHA1");
String secret = CONSUMER_SECRET + "&" + OAUTH_TOKEN_SECRET;
Log.d("secret", secret);
mac.init(new SecretKeySpec(secret.getBytes("utf-8"), "HMAC-SHA1"));
OAUTH_SIGNATURE = Base64.encodeToString(mac.doFinal(string_to_sign.getBytes("utf-8")), 0).trim();
Log.d("signature", OAUTH_SIGNATURE);
} catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
e.printStackTrace();
}
String query =
"oauth_consumer_key=\""+CONSUMER_KEY+"\""+
",oauth_token=\""+OAUTH_TOKEN+"\""+
",oauth_signature_method=\""+OAUTH_SIGNATURE_METHOD+"\""+
",oauth_timestamp=\""+OAUTH_TIMESTAMP+"\""+
",oauth_nonce=\""+OAUTH_NONCE+"\""+
",oauth_version=\""+OAUTH_VERSION+"\""+
",oauth_signature=\""+OAUTH_SIGNATURE+"\"";
Log.d("query","OAuth "+query);
headers.put("Authorization","OAuth "+query);
return headers;
}
};
request.setRetryPolicy(new DefaultRetryPolicy(18000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(request);
}
Наконец, вот мой запрос заголовка, который я получаю в logcat:
OAuth oauth_consumer_key = "*****", oauth_token = "******", oauth_signature_method = "HMAC-SHA1 ", oauth_timestamp =" 1545421361 ", oauth_nonce =" 8.308277993153459E7 ", oauth_version =" 1.0 ", oauth_signature =" ******* "
Где моя ошибка?Как мне отправить запрос на получение ответа?Большое спасибо за любую помощь.