Android Okhttp3和Gson框架简单使用

使用HTTP访问网络,其工作原理就是客户端向服务器端发送一条HTTP请求,服务器端收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就行了.以前我们发送HTTP请求一般有HttpClent和HttpUrlConnection,由于技术的发展,我们只能选择使HttpUrlConnection,但是除了它,就没有选择了吗?当然不是,在我们盛行开源的今天,很多优秀的开源框架就出现了,比如OkHttp,由于其简单易用,底层实现优秀,所以现在已经成为我们开发者首选的开源网络通信库,当然还有很多,比如Volley,不过由于其局限性,所以我们只说OkHttp,那么数据有了,但是返回的数据要是json数据,这其中很有名的就是Gson解析框架了,当然一般够用就可以了,其他还有很多速度很快的解析框架,我们不去探讨(其中okhttp可以做很多事情,比如下载文件,上传文件,上传用户信息和获取等等,具体使用方法推荐鸿阳大哥的demo):
https://github.com/hongyangAndroid/okhttputils

OkHttp和Gson框架使用步骤:
1:在AS-app/module build.gradle-dependencies中添加依赖

    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.google.code.gson:gson:2.7'

2:创建实例-发送请求-获取数据
基本用法:

//创建客户端实例
OkHttpClient client = new OkHttpClient();
//post请求
//        RequestBody requestBody = new FormBody.Builder()
//                .add("username", "lisi")
//                .add("password", "123456")
//                .build();
//        Request request = new Request.Builder().url(address).post(requestBody).build();

//向服务器端发送请求(get请求)
Request request = new Request.Builder().url(address).build();
//获取数据
String response=client.newCall(request).excute();

回调用法:

public static void OkHttpRequest(String address, okhttp3.Callback callback) {
        //创建客户端实例
        OkHttpClient client = new OkHttpClient();
        //post请求
//        RequestBody requestBody = new FormBody.Builder()
//                .add("username", "lisi")
//                .add("password", "123456")
//                .build();
//        Request request = new Request.Builder().url(address).post(requestBody).build();
        //向服务器端发送请求(get请求)
        Request request = new Request.Builder().url(address).build();
//获取数据
        client.newCall(request).enqueue(callback);
    }

3:对返回的数据进行Gson解析,若处理的数据response在一个方法中,那就必须使用runOnUiThread进行处理,若不在一个方法内,就可以用回调方式,以下就是解析的步骤:

  //数据
  String responseText = response.body().string();

  //根据格式通过JSONObject和JSONArray进行转换
   JSONObject jsonObject = new JSONObject(responseText);
   JSONArray jsonArray = jsonObject.getJSONArray("...");
   String content = jsonArray.getJSONObject(0).toString();

  //Gson解析
   User user= new Gson().fromJson(content , user.class);

猜你喜欢

转载自blog.csdn.net/ware00/article/details/70738045