当前位置: 首页 > 知识库问答 >
问题:

android spring httprequest上的JsonMappingException

骆鸿运
2023-03-14

我在异步任务中有这个调用。所有参数都正确。在postman或高级rest客户机中,调用工作正常,它返回一个带有对象列表的json。但是如果我尝试用spring在android中执行这个调用,我会出现这样的错误:

org.springframework.http.converter.httpMessageNotreadableException:无法读取JSON:无法从START_OBJECT令牌反序列化java.lang.String实例[source:org.apache.http.conn.eofsensorInputStream@1961b5e;行:1,列:1];嵌套异常是com.fasterxml.jackson.databind.jsonMappingException:无法从[source:org.apache.http.conn.eofsensorinputstream@1961b5e;line:1,column:1]处的START_OBJECT令牌反序列化java.lang.string实例

[
{
    "id": 57,
    "user_id": 2,
    "category_id": 5,
    "notification_title": "test 9",
    "notification_body": "breve 9",
    "description": "Sd sdfds sdfs dfsd fdsf",
    "image": null,
    "code": "2-5942525969dfa",
    "start_date": null,
    "expiration_date": null,
    "created_at": "2017-06-15 09:24:41",
    "updated_at": "2017-06-15 09:24:41"
},
{
    "id": 56,
    "user_id": 2,
    "category_id": 4,
    "notification_title": "test 8",
    "notification_body": "breve desc 8",
    "description": "Sdfsdf sdfds dsfs dsfds",
    "image": null,
    "code": "2-59424e24570a2",
    "start_date": null,
    "expiration_date": null,
    "created_at": "2017-06-15 09:06:44",
    "updated_at": "2017-06-15 09:06:44"
}]

这是我的AsyncTask

new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {

            JSONObject body = new JSONObject();

            try {
                body.put("api_token", Config.API_TOKEN);
                body.put("user_id", Config.USER_ID);
            } catch (JSONException e) {
                e.printStackTrace();
            }

            try {
                return template.postForObject(
                        Config.SERVICE_URL_BASE + "/getallposts",
                        body.toString(),
                        String.class
                );
            } catch (Exception e) {
                listener.onError(e.getMessage());
            }

            return null;
        }

        @Override
        protected void onPostExecute(String response) {
            if (response != null) {
                try {
                    List<JSONObject> jsonObjects = ResponseConverter.toJSONArray(response);
                    listener.onSuccess(jsonObjects);
                } catch (JSONException e) {
                    listener.onError(context.getResources().getString(R.string.cannot_load_posts));
                }
            } else {
                listener.onError(context.getResources().getString(R.string.cannot_load_posts));
            }
        }

    }.execute();

谁能帮帮我吗?

共有1个答案

莘钧
2023-03-14

问题解决了,spring framework rest tempolate版本是错误的,我使用了1.0.1版本,但正确的版本是:

    compile 'org.springframework.android:spring-android-rest-template:2.0.0.M3'
 类似资料:
  • Animal.java 我为它创建了以下自定义断言: AnimalAssert.java 编辑:基于第一个答案(cglib需要一个),我用一个no arg构造函数更新了动物类,但是抛出了相同的异常

  • 我的应用程序一直在许多Android平台上报告这个问题(4.1、4.0.4、2.3.6.…)。但我无法在我的手机上复制这个问题。我已经在Google上搜索了这个问题,但堆栈跟踪似乎与我的不一样。

  • 我有一台带有Intel CPU的Windows机器(在引导菜单上启用VMX)。我使用VirtualBox在上面运行Ubuntu Guest。我在上面运行qemu,以运行另一个Guest OS,使用kvm(选项)。 我在尝试插入kvm-intel模块时收到以下错误: 我已经检查了来宾操作系统中的vpx标志,但我也没有看到 有没有办法在来宾Ubuntu操作系统中启用kvm支持,以便我可以在Ubuntu

  • 我试图从java程序中使用Spark SQL,其中pom.xml中的依赖关系指向Spark版本1.6.0。下面是程序 但是,我在线程“main”java.lang.nosuchmethoderror:org.apache.spark.sql.sqlcontext.sql(ljava/lang/string;)lorg/apache/spark/sql/dataframe中出现异常;我正在创建一个平

  • 主机系统为ARCHLinux。我想开发需要运行Windows docker容器的.NET4.6.1应用程序。所以我在VirtualBox下运行Win10。然后我在Win10中安装Docker,以运行Windows Docker容器。Linux->VirtualBox->Win10->Docker->Windows Docker容器->要运行的应用程序。 或者更具体地说,VirtualBox是否支持

  • 问题内容: 我正在尝试根据此教程在我的应用程序中实现NotificationListenerService:http : //www.kpbird.com/2013/07/android- notificationlistenerservice.html ,但是调用getActiveNotifications时出现NullPointerException。 我正在向该服务发送广播,该广播应生成所有

  • 问题内容: 因此,我正在构建一个minecraft插件,该插件的一部分从mysql抓取一堆数据块,并在服务器启动时将其加载到缓存中。我有一些代码可以在Eclipse测试用例中正常运行。但是,当我在本地Minecraft服务器中加载插件时,出现了异常。 抛出异常的代码。 是从执行查询返回的实例。 只是返回一个 片段稍大…并不是真的可以显示其他内容。 我看过网上有人说要修复,我需要包括ojdbc6.j

  • 问题内容: 我尝试开发一种访问智能卡的javafx应用程序。 我有一个简单的概念证明,像这样: exepcion是: 问题答案: 只需在64位JDK的旁边(或相反)安装32位JDK,并确保使用32位版本编译并签名JAR / COD文件。 实际上,这是 64位 版本中的 错误 。http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f1279f