本帖最后由 孟凡凯老师 于 2016-5-12 10:14 编辑
概述: OKHttp是Android版Http客户端。Google官方在6.0版本里面删除了HttpClient相关API,从Android4.4开始HttpURLConnection的底层实现采用的是okHttp。 非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题, 使用范围: 1, OkHttp支持Android 2.3及其以上版本。
2, 对于Java, JDK1.7以上。 下载地址:
jar包下载:https://github.com/square/okhttp
Gradle配置: compile'com.squareup.okhttp3:okhttp:3.2.0' 使用: OkHttp官方文档并不建议我们创建多个OkHttpClient,因此全局使用一个。 GET请求方式: - //1, 创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //2,构建一个请求对象
- Request request = new Request.Builder().url(url).build();
- //3,发送请求
- try {
- Call call = okHttpClient.newCall(request);
- call.execute();
- //4,打印服务端返回的json串
- Log.i(TAG, "服务器返回的数据"+response.body().string());
复制代码1.创建OkHttpClient对象 2.使用Request.Builder构建请求对象 3.发送请求有两种方式,一种是通过call.execute()返回一个Response,调用response.body().string()方法获取数据另一种是通过call.enqueue(Callbackcallback)方法,传入一个callback对象,实现请求成功和请求失败两个方法。 - call.enqueue(new Callback(){
- @Override
- public void onFailure(Request request, IOException e){
- //请求失败后调用
- }
- @Override
- public void onResponse(final Response response) throws IOException{
- //请求成功后调用
- //此处并不是UI线程
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
复制代码4.获取服务器返回的数据 , response.body().string()获取字符串, response.body().bytes()获取的事二进制字节数, response.body().byteStream()获取的是流数据。
POST请求提交表单: - //1,创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //2,构建请求体
- RequestBody requestBody = new FormBody.Builder()
- .add("userName", "xx")
- .add("passWord", "xxxx")
- .build();
- //3,构建一个请求对象
- Request request = new Request.Builder()
- .url(url)
- .post(requestBody)
- .build();
- Response response = null;
- try {
- //4,发送post请求
- response = okHttpClient.newCall(request).execute();
- //判断此请求是否成功
- if(response.isSuccessful()){
- //5,在post请求发送成功后,服务端返回的内容,
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
复制代码通过以上代码可以看出okHttp的使用步骤: 1,创建一个OkHttpClient对象 2,构建请求体3,构建一个请求对象4,发送请求 5,在post请求发送成功后,服务端返回的内容
POST请求提交JSON数据: - //1,申明给服务端传递一个json串
- String jsonString="{'name':'tom','password':'xxx'}";
- //2,创建一个OkHttpClient对象
- OkHttpClient okHttpClient = new OkHttpClient();
- //3,创建一个RequestBody(参数1:数据类型 参数2: json数据)
- RequestBody requestBody = RequestBody.create(JSON, json);
- //4,创建一个请求对象
- Request request = new Request.Builder()
- .url(url)
- .post(requestBody)
- .build();
- //5,发送请求获取响应对象
- try {
- Response response = okHttpClient.newCall(request).execute();
- //6,判断此请求是否成功
- if(response.isSuccessful()){
- //7,在post请求发送成功后,服务端返回的内容
- Log.i(TAG, "服务器返回的数据"+response.body().string());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
复制代码
|