retrofit请求获取返回值错误

retrofit请求获取返回值的时候retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 37 path $.data

 进行请求的
((App) getApplication()).getApi().updateAuthorization(access_token, nonce, timestamp, userCode, sign, userPhone, type, approvalinfo, modelIds, new Callback<AuthorityListEntity>() {
                @Override
                public void success(AuthorityListEntity authorityListEntity, Response response) {
                    if (authorityListEntity.getMessage() != null) {
                        if (authorityListEntity.isSuccess()) {
                            failed(getResources().getString(R.string.authorizesucces));
                        } else {
                            String message = authorityListEntity.getMessage();
                            if ("超时了".equals(message)) {
                                String nonce = NetWorkUtil.getNonce();
                                String timestamp = NetWorkUtil.getTimestamp();
                                String refreshToken = SharedPreferencesUtils.getString(context, Constants.REFRESHTOKEN, "");
                                String code = SharedPreferencesUtils.getString(context, Constants.USERCODE, "");
                                String sign = new Md5().getMD5ofStr("refreshToken" + "=" + refreshToken + "&" + "userCode" + "=" + code + Constants.SIGNMANTISSA).toLowerCase();
                                refresh_1(nonce, timestamp, sign, refreshToken, code);
                            } else {
                                if (!TextUtils.isEmpty(message)) {
                                    failed(MessageUtils.setMessage(context, message));
                                }
                            }
                        }

返回值

 {"accountOperationType":"2","data":{},"message":"编辑授权成功","modelIds":null,"page":0,"success":true,"total":0,"totalPages":0}

下面是bean

public class AuthorityListEntity {

    private String message;
    private int page;
    private boolean success;
    private int total;
    private String accountOperationType;
    private List<String> modelIds;
    private List<DataBean> data;
    private int totalPages;

    public List<String> getModelIds() {
        return modelIds;
    }

    public void setModelIds(List<String> modelIds) {
        this.modelIds = modelIds;
    }

    public String getAccountOperationType() {
        return accountOperationType;
    }

    public void setAccountOperationType(String accountOperationType) {
        this.accountOperationType = accountOperationType;
    }


    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public class DataBean {
        private String userPhone;
        private String deviceAddress;
        private int deviceNum;
        private String name;
        private String icon;
        private String isAuthorited;
        private String roomCode;
        private String deviceCode;
        private String type;
        private String userCode;
        private String accountOperationType;
        private String validationCode;

        public String getAccountOperationType() {
            return accountOperationType;
        }

        public void setAccountOperationType(String accountOperationType) {
            this.accountOperationType = accountOperationType;
        }

        public String getValidationCode() {
            return validationCode;
        }

        public void setValidationCode(String validationCode) {
            this.validationCode = validationCode;
        }

        public String getUserPhone() {
            return userPhone;
        }

        public void setUserPhone(String userPhone) {
            this.userPhone = userPhone;
        }

        public String getDeviceAddress() {
            return deviceAddress;
        }

        public void setDeviceAddress(String deviceAddress) {
            this.deviceAddress = deviceAddress;
        }

        public int getDeviceNum() {
            return deviceNum;
        }

        public void setDeviceNum(int deviceNum) {
            this.deviceNum = deviceNum;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public String getIsAuthorited() {
            return isAuthorited;
        }

        public void setIsAuthorited(String isAuthorited) {
            this.isAuthorited = isAuthorited;
        }

        public String getRoomCode() {
            return roomCode;
        }

        public void setRoomCode(String roomCode) {
            this.roomCode = roomCode;
        }

        public String getDeviceCode() {
            return deviceCode;
        }

        public void setDeviceCode(String deviceCode) {
            this.deviceCode = deviceCode;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public String getUserCode() {
            return userCode;
        }

        public void setUserCode(String userCode) {
            this.userCode = userCode;
        }
    }
}

4个回答

{"accountOperationType":"2"**,"data":{},**"message":"编辑授权成功","modelIds":null,"page":0,"success":true,"total":0,"totalPages":0}

data域的返回值错误,{}应该改成【】

com.google.gson.JsonSyntaxException可以发现是Json的问题,把数据拿到在线JSON工具检测一下,看是否有错误

把返回的Gson字段放在在线Gson字段转java bean类的工具
http://www.atool.org/json2javabean.php

使用 https://www.json.cn/ 可以在线对jso数据进行解析, json数据中 {} 表示对象, []表示集合

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#获取url请求的返回值
属于网络请求
asp.net 请求url 获取返回值
通过webrequest, webclient两种方式请求url获取对应的返回值
android retrofit 获取post请求参数值
Android 使用retrofit + okhttp + Rxjava2.x 做网络请求已成为趋势 我最近使用 Flowable> getFacevalidety(@Part("ID") String ID, @Part("name") String name, @Part MultipartBody.Part part) 做网络请求的时候发现一个很有意思的问题, 如:int ID =
retrofit的简单使用(请求网络数据)
倒入依赖 implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com.squareup.okhttp3:okhttp:3.1.2' implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.squareup.retrofit2...
retrofit请求的使用
retrofit相关的pom.xml &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.squareup.retrofit2&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;retrofit&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;2.3.0&amp;lt;/version&amp;gt; &amp;lt;/de
Retrofit请求字符串
在使用Retrofit来作为网络请求库之后,笔者查阅了网上的有关教程,无外乎都是请求json数据,使用addConverterFactory(GsonConverterFactory.create())来作为转化器,如果业务需求是请求 字符串,而不是json数据格式呢,继续使用这个转换器就会产生错误。好,来到正题,如何使用Retrofit请求一段字符串: ...
源码分析Retrofit请求流程
Retrofit 是 square 公司的另一款广泛流行的网络请求框架。前面的一篇文章《源码分析OKHttp执行过程》已经对 OkHttp 网络请求框架有一个大概的了解。今天同样地对 Retrofit 的源码进行走读,对其底层的实现逻辑做到心中有数。 0x00 基本用法 Retrofit 的项目地址为:github.com/square/retr… 打开项目目录下的 samples 文件夹,从这里...
网络框架Retrofit的Get请求
Retrofit(改良)框架是Square公司出品的目前非常流行的网络框架,效率高,实现简单,运用注解和动态代理,极大的简化了网络请求的繁琐步骤,非常适合处理REST ful(一种风格)网络请求.目前Retrofit版本是2(可以说是Square公司之前出品okhttp的升级版) 特点: 性能好,处理快,使用简单.(速度比Volley更快) 使用REST API非常方便 支持N
Retrofit各种姿势请求
前言本文是纯retrofitDemo,和RxJava无关,如有错误请直接指出,感谢。文档GitHub: https://github.com/square/retrofit官方文档: http://square.github.io/retrofit/本文测试接口:String URL = “https://api.douban.com/v2/movie/top250?start=0&count=
关于retrofit的Post请求
首先网上的讲解一大堆,这里只是自己当时的问题,或者是接口的问题,现在吧写出来,为了下次使用 为嘛的接口是 http:xxxxx /xxx/xxx 然后需要是post请求 方式是 {“dev”:”xxxxxooooo”} 自己找了一大堆,最后解决ok,下面代码 BASE_URL = "https://xxxxxx.xxx/xxxx/";//http服务接口 public interface Api
retrofit请求持久化Cookie
今天给大家分享Retrofit2.0 OkHttp如何自动加载Cookie; Retrofit,话说Retrofit最近真的很火啊,Retrofit+OKHttp现在似乎已经成为了Android网络请求框架的主流框架了吧,大家以前用的可能是XUtils框架,个人感觉也不错,也更新到了Xutils3,但是Retrofit是Square出的, 所以一定要学习一下。 持久化Cookie
Retrofit请求方式
//首先就是要导包 compile 'com.squareup.retrofit2:retrofit:2.3.0' //RetrofitHelper package com.example.xzhaogao01.netWork; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.
四种retrofit请求api
    @GET    Observable&amp;lt;String&amp;gt; getData(@Url String url, @QueryMap Map map);    @GET    Observable&amp;lt;String&amp;gt; getData(@Url String url);        @FormUrlEncoded    @POST    Observable&amp;lt;String&amp;...
Retrofit请求工具类
package bwei.com.myyikezhong.utils; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; ...
Retrofit请求网络解析json
懒得一大堆废话,说完实现最终目标,直接进入正题操作,直接上代码,看使用方法   实现目标:用Retrofit解析网络json,放到RecyclerView中   第一步,写好布局文件以及item,我这里用的RecyclerView,不知道RecyclerView就点进去看看,解析出来的格式就是,一个图片,一个文字,直接看布局文件和item。 加入依赖 implementation 'c...
retrofit框架请求
使用retrofit框架请求网络,简单的实例,让你学会使用
retrofit联网请求的使用
1.倒入依赖 implementation 'com.squareup.retrofit2:retrofit:2.4.0' 2.写一个接口定义Get和Post public interface BaseService { @GET retrofit2.Call&amp;lt;ResponseBody&amp;gt; get(@Url String url, @QueryMap Map&amp;lt;St...
Retrofit 请求参数类型
Retrofit 请求网络时,使用的okhttp框架,所以除了Retrofit api 通过注解的方式添加参数类型外,最后都是进入到 了okhttp来处理。 四大类型:红色部分为添加部分 http://163.223.67.88/car/getUser/2 http://163.223.67.88/car/getUser/2?name="malei"&sex="man" htt
retrofit简单的get请求
建立一个接口 :保存网址 http://huixinguiyu.cn/Assets/js/data.jspublic interface Api { //无参 public final static String baseUrl1 ="http://huixinguiyu.cn/";}-在建立一个接口-----------感觉像是拼接接口-----------------
Golang写Post请求并获取返回值
直接上代码,其中可以在下面代码中添加 package mainimport ( “fmt” “net/http” “io/ioutil” “net/url” )func main() { //需要post的数据,以key-value形式提交 data := make(url.Values) data[“appId”]
js请求servlet并获取返回值流程
servlet返回数据的方法 方法 js请求:       $.ajax(        {           type: &quot;post&quot;,           url: &quot;ctpicture.do?name=&quot;+name+&quot;&amp;amp;password=&quot;+pwd+&quot;&amp;amp;height=&quot;+height+&quot;&amp;amp;age=&quot;+age,           //data: &
.net发送url请求并且获取返回值
我要想一个http页面发送请求,例如http://www.***.com/?c=coupon&m=stage_property&money=" + moneyrn然后获取页面返回的参数abc
请求一个获取页面返回值的asp程序
我通过下面得地址可以返回“Refresh('|无盘|');”的值,请问怎么编写一个asp程序,把返回的“Refresh('|无盘|');”这段值赋予一个asp程序中得变量。rnhttp://api.cnatcn.com/keywords.php?mydata="无盘得住过"rnrnrn非常急,期望高手们帮忙!万分感激
Retrofit网络请求GET请求POST请求
Retrofit网络请求,内含GET、POST请求,POST请求需要用自己的服务器针对性接口测试、GET请求公开接口测试,解析内容简单按需自己项目,很好的框架通俗易懂
使用Retrofit获取JSON数据
在大家使用网络请求的时候,往往会出现一种情况:需要拿到服务器返回来的JSON字符串,而Retrofit会默认将Json解析,而又没有直接暴露出拿到Json字符串的方法;       今天测接口的时候,发现当数据正常时,服务器会返回{"code":200,"datas":"1"},当请求参数有错误时,会返回{"code":400,"datas":{"error":"\u59d3\u540d\u4e
retrofit的post方式请求数组
一个数组里有两个实体类
Retrofit 请求体header的添加
http请求是网络请求的应用层协议,他主要包括三个部分组成: 请求行(请求地址,请求方式,协议版本) + 请求头(header)+ 请求体(post请求才有) 1.请求行:   要说明请求的地址和get/post请求 2.请求头:   主要是告诉服务器我们的一些需求,比如我们可以接受的数据类型,缓存机制等等   content-type : application/js
Retrofit踩坑之Delete请求
来到一家新的公司,时间直接不够用了,版本出的飞起,很长时间没总结自己最近学到的东西了(其实也没学什么)! 公司的后台是一个搞php的大兄弟,我们进行对接。在对接的过程中,鄙人不才,一般都是用的POST和GET的请求居多,确实对DELETE请求接触不多,这次后台的大兄弟就直接让我提交DELETE请求来进行实体的删除操作。那就来呗,不就是和POST差不多嘛,代码如下: @DELETE("bean/
Retrofit预处理接口错误
后台返回的数据基本上格式都是差不多的,有一个flag和message传递接口的一些调用信息,但是Rx+Retrofit联合使用的时候只要接口调用成功,就不会走onError方法,通常要在onNext里面写一些flag的判断分支,很是麻烦,所以有时候就需要直接对reponse做一个预处理,让flag参数非正常的时候直接走onError方法. 1.创建类 public class CustomGs...
retrofit 错误解析
example.luokx.loadmore_2016_03_02_09_56.MainActivity}: java.lang.IllegalArgumentException: @Field parameters can only be used with form encoding. (parameter #1) //登录 @FormUrlEncoded @POST("api/
Retrofit获取网络数据
1.1导包:     compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.3.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.retrof
Retrofit基础之:GET与POST请求
Retrofit是大名鼎鼎的Square公司搞出来的一个网络请求框架。其本身是对okhttp做了一层封装,网络请求都交给给了Okhttp。 Retrofit只需要通过简单的配置就能进行网络请求。开源地址:http://square.github.io/retrofit/ 开始学点最简单地GET及POST请求,直接上代码,文字表达见注释: 第一步:首先定义接口类: /** * descript
Android —— Retrofit 请求注解分析
Android 请求方式无非就是 POST、PUT、DELETE以及HEAD 这几种, Retrofit 中的注解: 1. GET ———-查找资源(查) 2. POST ——–修改资源(改) 3. PUT ———-上传文件(增) 4. DELETE —-删除文件(删) 5. HEAD——–只请求页面的首部 @QueryMap、@Path、@Body、@FormUrlEnc
Retrofit结合RxJava请求网络数据
一,导入依赖 compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.2.0' compile 'com.squareup.retrofit2:converter-gson:2.
retrofit请求直接返回string
1.添加gradle依赖:      compile com.squareup.retrofit2:converter-scalars:2.0.0'   2.更换转换器   mRetrofit = Retrofit.Builder()                   .baseUrl(HttpAddress.SITE)                   .addConverter
Retrofit请求方法那些事儿
http://blog.csdn.net/u013658374/article/details/74651589 Retrofit--请求方法那些事儿
采用retrofit获取网络数据
本文采用retrofit网络请求库获取聚合网数据,文中的例子是电话号码归属地查询, 其请求接口如下: 首先添加retrofit依赖: compile 'com.squareup.retrofit2:retrofit:2.0.2' 如果需要解析返回的json数据,则还需要添加下面的依赖,本文解析了json: compile 'com.squareup.retro
Retrofit获取静态数据
第一步:在Module文件中添加1.retrofit的依赖和2.gson解析的依赖; 点击File —— Project Structure —— Dependencies依赖,选择右边的加号进行添加 implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:co...
retrofit异步获取网络数据
retrofit异步获取网络数据,使用了retrofitManager策略;服务方法在bqservice里写,需要学习一点retrofit注解,不学也没事,一看我的类便知;
Retrofit的基本使用(Get请求)
最近一直在重构毕设的项目,再加上实验室最近手头上有两个项目要写,事情稍微有点儿多。最近的项目中做的最多的就是网络请求,以前都是用的okhttp,但是看现在主流的模式都是Retrofit+okhttp+Rxjava,所以,学习了一下Retrofit
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池