1_OKHttp简介
1.1_简介
OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由、连接协议、拦截器、代理、安全性认证、连接池以及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息
这个库也是square开源的一个网络请求库(okhttp内部依赖okio)。现在已被Google使用在Android源码上了,可见其强大。
关于网络请求库,现在应该还有很多人在使用android-async-http。他内部使用的是HttpClient,但是Google在6.0版本里面删除了HttpClient相关API,可见这个库现在有点过时了。
1.2_下载地址
http://square.github.io/okhttp/
1.3_OKHttp主要功能
1、联网请求文本数据
2、大文件下载
3、大文件上传
4、请求图片
2_原生OKHttp的Get和Post请求思路
a.get请求步骤:
1)获取client对象
2)传入url获取request对象
3)获取response对象
4)利用response对象的body().string()方法获取返回的数据内容
b.post请求步骤:
1)获取client对象
2)传入url获取request对象,对比get方法,其还有在获取request对象的时候加多一个post方法用于传递客户端向服务器端发送的数据。
3)获取response对象
4)利用response对象的body().string()方法获取返回的数据内容
3、上代码
引入jar包
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
写java类
package com.xxl.job.executor.usi.utils;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* okhttp请求
* @author
*
*/
public class OkHttpClientUtil {
static OkHttpClient client = new OkHttpClient();
/**
* post请求xml入参
* @param url
* @param data
* @return
* @throws IOException
*/
public static String doPostXml(String url,String data) throws IOException {
MediaType mediaType = MediaType.parse("application/octet-stream");
RequestBody body = RequestBody.create(mediaType, data);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
/**
* post请求json入参
* @param url
* @return
* @throws IOException
*/
public static String doPostJson(String url,String data)throws IOException{
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType,data);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
/**
* get请求
* @param url
* @return
*/
public static String httpGet(String url) {
Response response =null;
String result="";
Request request = new Request.Builder().url(url).build();
try {
response = client.newCall(request).execute();
result=response.body().string();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}