POST с приложением contentType /json для Android AsyncHttpServer устанавливает нулевое тело запроса
У меня AsyncHttpServer работает на моем устройстве Android. У меня есть метод обратного вызова для POST, установленный так:
server.post(pattern, new HttpServerRequestCallback() {
@Override
public void onRequest(AsyncHttpServerRequest request,
AsyncHttpServerResponse response) {
try {
List<T> entityList = mapper.readValue(request.getBody().get().
toString(), typeReference);
for (T newEntity : entityList) {
newEntity.save();
}
response.code(200);
response.end();
} catch (IOException e) {
e.printStackTrace();
}
}
});
где сервер new AsyncHttpServer()
и картограф new ObjectMapper()
У меня есть точка останова в строке, начинающейся с List<T>
и я пытаюсь отправить некоторые данные на сервер с помощью cURL следующим образом:
curl -H "Content-Type: application/json" -X POST -d '[{"_id":"767da7ae-
7826-4f67-853a-23f1d69b5f39","label":"L"}]' http://myserver:5000/test
По какой-то причине, когда я публикую Content-Type
установлен в application/json
request.getBody()
возвращается null
, но если я изменю тип контента на text/plain
Тело содержит набор данных JSON с cURL, как и следовало ожидать.
Кто-нибудь знает, почему это происходит, и как я могу заставить его работать с Content-Type: application/json
?
1 ответ
У меня была такая же проблема, когда я использовал библиотеку Volley. Проблема стала решаться с помощью:
"application / json; charset = utf-8";
как тип содержимого тела.