xUtils3.0版本的发送同步网络请求的方式

2018-08-07 20:00:42

对于Android开发来说,基本都是用异步来从网络上请求数据,很少用到同步请求的。近日项目有个地方需要使用到同步请求(以我目前的知识储备来说好像只能用同步请求来解决这个问题了),去网上搜索相关资料,又没有找到什么明确的使用方法。所以记下来,以备不时之需。

首先bean类里进行相关,注解:


/** * 群成员信息类 * Created time on 2016/6/28. */@HttpResponse(parser = JsonResponseParser.class)public class GroupMemberInfo implements Serializable{    /**     * code : 0000     * data : {"departmentLevel":{},"dispatcherLevel":{"chinese":"超级管理员","key":"SUPER_ADMI_he     */    private String code;    /**     * headImg : 
     * imid : 6HAYAkUeqehe/UtSewyg5tocsw68x8RAJ4SatSeYit7H6eY7dubtz9RpJijbHPibrpdxLw=     * mobile : 
     * name : 腾讯超级管理员     * uuid : 
     */    private DataBean data;    private String msg;    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }    public DataBean getData() {        return data;    }    public void setData(DataBean data) {        this.data = data;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    @Table(name="group_member")    public static class DataBean implements Serializable {        private DepartmentLevelBean departmentLevel;        /**         * chinese : 超级管理员         * key : SUPER_ADMIN         */        @Column(name ="uuid", isId =true)        private String uuid;        @Column(name ="headImg")        private String headImg;        @Column(name ="imid")        private String imid;        @Column(name ="mobile")        private String mobile;        @Column(name ="name")        private String name;
        public String getHeadImg() {            return headImg;        }        public void setHeadImg(String headImg) {            this.headImg = headImg;        }        public String getImid() {            return imid;        }        public void setImid(String imid) {            this.imid = imid;        }        public String getMobile() {            return mobile;        }        public void setMobile(String mobile) {            this.mobile = mobile;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getUuid() {            return uuid;        }        public void setUuid(String uuid) {            this.uuid = uuid;        }
    }
}

然后写出解析器的解析方式,我这里采用的是fastjson,真是感觉很好用。



/** * Created by jin * Created time on 2016/7/4. */public class JsonResponseParser implements ResponseParser {// 如果实现 InputStreamResponseParser, 可实现自定义流数据转换.    @Override    public void checkResponse(UriRequest request) throws Throwable {        // custom check ?        // get headers ?    }    /**     * 转换result为resultType类型的对象     *     * @param resultType  返回值类型(可能带有泛型信息)     * @param resultClass 返回值类型     * @param result      字符串数据     * @return     * @throws Throwable     */    @Override    public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {        // TODO: json to java bean        if (resultClass == List.class) {            // fastJson 解析:             return JSON.parseArray(result, (Class<?>) ParameterizedTypeUtil.getParameterizedType(resultType, List.class, 0));        } else {            // fastjson 解析:             return JSON.parseObject(result, resultClass);        }

    }
}

准备工作已经完成,最后就是直接使用了,用起来还是很简单的。



try {
    RequestParams params = new RequestParams(UrlConstants.findUserInfoByUuid);    params.addBodyParameter("accessToken", User.getAccessToken());    params.addBodyParameter("uid", User.getUid());
    //这里就是使用同步请求的地方了,只有一句代码,可以直接返回一个对象。    GroupMemberInfo groupMemberInfo = x.http().postSync(params, GroupMemberInfo.class);} catch (Throwable throwable) {
    throwable.printStackTrace();}
  • 2020-11-17 09:50:32

    android开发怎样让悬浮Activity只是隐藏而不销毁

    android在mainfest中给Activity添加一个属性 android:theme="@android:style/Theme.Dialog",可以使Activity悬浮在其它窗口上面,在布局中可以设置activity的大小,当点击悬浮Activity边缘以外区域时,Activity会消失,观察消失时其生命周期会发现执行了finish()方法从而执行了onDestroy方法。有时我们只是需要将Activity隐藏,并不销毁,此时可以重写finish方法,如下:

  • 2020-11-17 09:56:02

    uni-app直接用webiew打开本地js资源

    如果再结合activity不销毁,隐藏的方法,像里面传递参数,来改变页面,不销毁webview,我发现这样比原生的都要快。这样又能用于app端,又能生成小程序,何乐而不为

  • 2020-11-17 09:59:05

    在线图片取色器工具

    不知道为啥,现在idea的取色工具怎么都不好使了,给开发人员反映过,都一年了有没修复咋地。 网上搜到一个取色工具,把图片传上去,就可以点击取色。不错。

  • 2020-11-17 10:05:53

    mongoDB 修改密码

    mongodb的用户信息是存放在system.users表中的,修改密码不能直接更新表数据,这样的话,存到表里的密码是明文的,这就不对了。