Volley Post JsonObjectRequest игнорирует параметры при использовании getHeader и getParams
Я пытаюсь подключить API url="api адрес", который принимает два типа заголовков: application/json для ответа в json и application/xml для ответа в xml. Мне нужно нажать JSON с параметрами JSON, и ответ будет также в формате JSON. Использование Android Volley Post запрос с установкой заголовков JsonObjectRequest с использованием getHeaders он подключается к серверу, но getParams для установки параметров не работает.
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Constants.BASE_URL + Constants.LOGIN, null, response,
response_error) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Map<String, String> getPostParams()
throws AuthFailureError {
// TODO Auto-generated method stub
Map<String, String> params = new HashMap<String, String>();
params.put("key", "value");
return params;
}
};
// implementation of listeners
Response.Listener<JSONObject> response = new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
Log.e("responce", response.toString());
// msgResponse.setText(response.toString());
hideProgressDialog();
}
};
Response.ErrorListener response_error = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error responce", error.getMessage());
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
};
//get params never get called
//i also tried alternative to send params but does not works.
Map<String, String> params = new HashMap<String, String>();
params.put("key", "value");
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Constants.BASE_URL + Constants.LOGIN, new JSONObject(params), response,
response_error) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
};
any type of help will be appretiated, Thanks in advance.
2 ответа
Залп проигнорирует ваш Content-Type
Если вы хотите изменить тип содержимого, вы можете переопределить getBodyContentType
метод:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, url,
new JSONObject(params), response, response_error) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
}
почему залп игнорирует ваши параметры? взгляните на мой другой ответ.
Volley JsonObjectRequest Отправить запрос не работает
Возьмите другой ответ из этого поста, который начинается с: Вы можете создать собственный JSONObjectReuqest