Gson解析&okhttp3封装&GsonFormat插件

记录一下,自己犯过最愚蠢的错误

Callback中onResponse(Call call, Response response) ,对返回值 response 进行解时,

String responseText=response.body().string();

误写成了body().toString() 这里打印出来的是 okhttp3.internal.http.RealResponseBody@22f08b2

被这个错误折磨了几个小时,好气好气

然后讲一下封装一下okhttp3,GsonFormat插件的使用,还有进行Gson解析,我们解析干货集中营提供的数据,地址:http://gank.io/api/random/data/Android/1

1.首先打开settings–>plugins–>搜索GsonFormat 然后下载(就是Uninstall对应的位置)–>下载完后点ok,这时Android studio会重启

这里写图片描述

紧接着建一个bean类,在类中空白处右键,选择Generate,出现下图,选择GsonFormat
这里写图片描述

然后把我们的要解析的json数据复制到下图,点击ok->ok(建议出现的对话框最好截屏,方便后面解析,不截屏也没事,反正用的是gson),这时就会出现神奇的一幕了

这里写图片描述

ublic class DataBean {

    /**
     * error : false
     * results : [{"_id":"5700808d67765933d9b0aa3a","createdAt":"2016-04-03T10:31:41.176Z","desc":"一个生成Material Design风格icon的工具,比如阴影形状之类的,挺适合个人开发者。","publishedAt":"2016-06-23T11:58:15.971Z","source":"chrome","type":"Android","url":"https://github.com/Maddoc42/Android-Material-Icon-Generator","used":true,"who":"06peng"}]
     */

    private boolean error;
    private List<ResultsBean> results;

    public boolean isError() {
        return error;
    }

    public void setError(boolean error) {
        this.error = error;
    }

    public List<ResultsBean> getResults() {
        return results;
    }
    ......
}

没看错,没看错,没看错,bean类自动帮我们写了,第一次见到的时候感觉以前都白混了,哈哈,对于再复杂的json数据都不用怕了

封装HttpUtil 类,执行请求操作


public class HttpUtil {
        public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
            Log.e("打印信息", "进入HttpUtil");
            OkHttpClient client=new OkHttpClient();
            Request request=new Request.Builder().url(address).build();
            client.newCall(request).enqueue(callback);

        }
}

封装Utility 类,json解析

    public static DataBean handleDataResponse(String response){
        if (!response.equals("")){
                Gson gson=new Gson();
                DataBean bean=gson.fromJson(response, DataBean.class);
            Log.e("打印", "handleDataResponse: "+bean.toString() );
        }

        return null;
    }

点击事件:

 String url="http://gank.io/api/random/data/Android/1";
                HttpUtil.sendOkHttpRequest(url, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        e(TAG, "onFailure: 失败" );
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        String responseText=response.body().string();
                        Utility.handleDataResponse(responseText);
                    }
                });

打印(如果打印不了,是不是你权限没加啊<uses-permission android:name="android.permission.INTERNET" />):

12-29 14:01:48.791 29686-29863/com.example.lm.newsdemo E/打印: handleDataResponse: DataBean{error=false, results=[ResultsBean{_id='57179a5667765974fbfcf936', createdAt='2016-04-20T23:03:50.177Z', desc='图形编辑开源控件,支持自定义贴图 图片滤镜 图片旋转 以及图片剪裁操作', publishedAt='2016-04-21T11:41:00.247Z', source='chrome', type='Android', url='https://github.com/siwangqishiq/ImageEditor-Android', used=true, who='Jason'}]}

数据都有了,剩下的就是往View中填数据了

最后提个建议,如果自己要做一个客户端练手,可是又没有数据怎么办,其实《聚合数据》为我们提供数据,各种api,够学了,链接:https://www.juhe.cn/ (哎呀,不是打广告,不要打我—————–脸)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值