Я пытаюсь вызвать RESTful API в своем приложении Android с помощью Volley. API требует, чтобы пользователь аутентифицировался с использованием открытого ключа и хэша, который будет отправлен через HTTP-заголовок.Как обеспечить отправку запроса заголовка при использовании Volley
Когда я пытаюсь отправить запрос POST с заголовками открытого ключа и хэша, я обнаружил, что заголовок не добавляется/принимается сервером, и я получаю ошибку Volley - BasicNetwork.performRequest: Неожиданный код ответа 400
Это метод, который я пытаюсь использовать для отправки запроса заголовка с параметрами запроса с использованием JSON.
HashMap<String, String> params = new HashMap<String, String>();
params.put("email", email.getText().toString());
params.put("password", password.getText().toString());
pDialog = new ProgressDialog(LoginActivity.this);
pDialog.setMessage("Logging in...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue();
JsonObjectRequest request = new JsonObjectRequest(ApplicationConstants.url_sign_in, new JSONObject
(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Log.d(TAG, "onResponse") ;
error = response.getBoolean(TAG_ERROR);
message = response.getString(TAG_MESSAGE);
Toast.makeText(LoginActivity.this, message + " value of error", Toast.LENGTH_LONG).show();
pDialog.cancel();
} catch (JSONException e) {
e.printStackTrace();
}
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG,"onErrorResponse()") ;
pDialog.cancel();
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null && networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED) {
// HTTP Status Code: 401 Unauthorized
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put(ApplicationConstants.publicKey, "Yahoo");
headers.put(ApplicationConstants.hash, "Google");
Log.d(TAG,"getHeaders()") ;
return headers;
}
};
requestQueue.add(request);
ApplicationConstants класса
public interface ApplicationConstants {
//String ip = "10.0.3.2";
String ip = "192.168.100.2";
String publicKey = "pskPublicKey";
String hash = "pskPublicKey";
Если я пытаюсь это только с параметрами запроса он работает, но когда, когда я пытаюсь отправить запрос заголовок это не удается отправить запрос заголовка.
Как вы можете видеть на картинке, я снабжал открытый ключ и хэш в почтальоном, и я также послал данные в заголовок от андроида, но он не получил на сервере
Это делает работу клиента REST я проверить его с помощью пост человека. Я также устал 'header.put ("Content-Type", "application/json"); –
Если вы не возражаете, можете ли вы приложить скриншот запроса клиента postman rest, который работает? Затем я могу сравнить параметры/заголовки, которые вы отправляете туда, и код Android. – Antrromet
Вы уверены, что константы 'ApplicationConstants.publicKey' и' ApplicationConstants.hash' соответствуют «pskPublicKey» и «pskPrivateKey» соответственно? – Antrromet