У меня есть настройка веб-api, и одна из конечных точек API принимает объект JSON (который в API получает разрешение на объект .NET).Использование волейбола для вызова веб-службы
Использование Почтальон я могу успешно назвать пост конечную точку, вот URL
https://example.com/api/helprequests
А вот JSON, который я включаю в запросе Почтальон
{"Title":"Test Title", "Message":"Test Message"}
Все хорошо работает в Почтальон, но я пытаюсь назвать этот API из приложения Android, используя Volley.
Вот соответствующий код
String webAddress = "http://example.com/api/helprequests/";
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, webAddress,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("RESPONSE", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("RESPONSE", "That didn't work!");
}
}) {
@Override
public String getBodyContentType() {
return "application/json";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("Title","Test title");
params.put("Message", "Test message");
} catch (Exception ex) {
VolleyLog.wtf("Unsupported Encoding");
return null;
}
return null;
}
};
queue.add(stringRequest);
Когда я запускаю это я получаю следующее сообщение об ошибке:
E/Volley: [50225] BasicNetwork.performRequest: Unexpected response code 500 for https://example.com/api/helprequests
Как добавить пост данные для запроса Volley?
Предполагаются Нотариальный и сообщение, чтобы быть в теле, а не в заголовке? Также вы возвращаете null в Тело. – Enzokie
Я думаю, что название и сообщение должны быть в теле - в чем цель getBody? Я поставил это вместе из нескольких мест онлайн – andrewb
Не используйте 'getBody'. У вас есть JSON. Волейбол имеет классы JSON. http://afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest.html –