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/jsonrequest.getBody() возвращается null, но если я изменю тип контента на text/plain Тело содержит набор данных JSON с cURL, как и следовало ожидать.

Кто-нибудь знает, почему это происходит, и как я могу заставить его работать с Content-Type: application/json?

1 ответ

У меня была такая же проблема, когда я использовал библиотеку Volley. Проблема стала решаться с помощью:

"application / json; charset = utf-8";

как тип содержимого тела.

Другие вопросы по тегам