使用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);