POST with contentType application / json to Android AsyncHttpServer将请求体设置为null

时间:2016-02-16 08:18:39

标签: android json curl jackson androidasync-koush

我有AsyncHttpServer在我的Android设备上工作。我有这样的POST设置的reqquest回调方法:

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正文包含正如我所期望的那样,使用cURL设置JSON数据。

有谁知道为什么会这样,我怎样才能让它与Content-Type: application/json一起使用?

1 个答案:

答案 0 :(得分:0)

当我使用Volley库时,我遇到了同样的问题。使用以下方法解决了这个问题:

  

&#34;应用/ JSON;字符集= UTF-8&#34 ;;

作为正文内容类型。