Я новичок в Volley и Android в целом. Ниже приведен фрагмент кода (Android с помощью Volley), который я пытаюсь выполнить, однако сервер возвращает 400. Использование другого клиента REST отлично работает. Это запрос на сервер с использованием метода PUT.Android Volley PUT request
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sendRequest();
}
private void sendRequest() {
RequestQueue queue = Volley.newRequestQueue(this);
final JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("password", "ttttt");
jsonObject.put("username", "tester3");
jsonObject.put("token", "blah");
} catch (JSONException e) {
// handle exception
}
JsonObjectRequest putRequest = new JsonObjectRequest(Request.Method.PUT, url, jsonObject,
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
// response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.toString());
}
}
) {
@Override
public Map<String, String> getHeaders()
{
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
headers.put("Accept", "application/json");
return headers;
}
@Override
public byte[] getBody() {
try {
Log.i("json", jsonObject.toString());
return jsonObject.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
};
queue.add(putRequest);
}
Когда я выполняю этот код, я всегда получаю запрос 400 Bad, и я не могу понять, почему. Использование другого клиента, такого как Почтальон, работает так, как ожидалось. Вот запрос Почтальон:
Сырое Запрос:
{ "маркер": "бла", "пароль": "TTTTT", "имя пользователя": "Tester3" }
Headers: Content-Type: application/json
Я не вижу ничего плохого в запросе, я надеюсь, кто-то может указать, что я делаю неправильно?
Вам удалось найти решение? Я тоже застрял в той же ситуации. – RmK
Боюсь, что я этого не сделал, закончилось время и перешел на модификацию. – WolfBane
Даже у меня не хватило времени. Оформить заказ, но не удалось схватить за короткое время. Но ваш вопрос помог решить проблему. Добавляя 'headers.put (« Accept »,« application/json »' в заголовке, решили это. Спасибо. – RmK