easy- okhttp是对okhttp3上层封装的网络框架,支持文件上传和下载表单提交(文件和一个参数对应多值),链式调用,并且默认整合Gson,对返回结果多种转换,同时还支持HTTPS单向认证和双向认证等特性。
okhttp3网络框架的流行始于Android,但是在Java后端仍然是Apache HttpClient网络框架,这个框架的缺点在于设计非常的复杂,而且Jar包比较大。因此封装easy- okhttp网络框架是降低对网络操作的难度,更是希望弃用Apache HttpClient,其次也是为了帮助 okhttp3 的推广。
框架特性
框架引入
Maven之下
<dependency> <groupId>com.mzlion</groupId> <artifactId>easy-okhttp</artifactId> <version>1.0.0-Final</version> </dependency>
Gradle之下
compile 'com.mzlion:easy-okhttp:1.0.7-beta'
用法示例
1.普通的GET请求无参数
String responseData = HttpClient .get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect") // 请求方式和请求url .execute() .asString();
2.普通的GET请求带参数
String responseData = HttpClient .get("http://localhost:8080/okhttp-server-test/userInfo/pageSelect") //请求方式和请求url .queryString("username","mzlion") //设置请求参数 .execute() .asString();
3.POST普通表单提交
String responseData = HttpClient .post("http://localhost:8080/okhttp-server-test/userInfo/create") //请求方式和请求url .param("username","mzlion") // 表单参数 .param("userPwd", "123") // 表单参数 //queryString("queryTime","20160530") //url参数 .execute() .asString(); //formParam()重载方法还支持`Map`
4.POST提交String
String responseData = HttpClient .textBody("http://localhost:8080/okhttp-server-test/userInfo/create") // 请求方式和请求url .json("{\"username\":\"mzlion\",\"userPwd\":\"123\"}") // post提交json //.xml("") //post提交xml //.html("function fun(){}") //post提交html //.charset("utf-8") //设置编码 .execute() .asString();
5.POST提交二进制文件
String responseData = HttpClient .binaryBody("http://localhost:8080/okhttp-server-test/userInfo/avatar") // 请求方式和请求url .stream(this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg")) // post提交流 //.file(new File("d:/andy-bao.jpg")) //post提交文件 .contentType(ContentType.IMAGE_JPG) //设置请求内容类型 .execute() .asString(); //ContentType内置常见的MIME类型,基本上不用自己创建了
6.POST表单提交含文件上传
String responseData = HttpClient .formDataPost("http://localhost:8080/okhttp-server-test/userInfo/createWithFile") //请求方式和请求url .param("userName", "test") .param("userPwd", "123456") .param("nickName", "Test") .param("realName", "测试") .param("hobby", "测试,就爱测试") .param("avatarFile", this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"), "andy-bao.jpg") //.formParam("avatarFile", this.getClass().getClassLoader().getResourceAsStream("andy-bao.jpg"), "andy-bao.jpg") .execute() .asString(); //formParam()重载方法还支持`Map`
7.自定义签名网站https访问
自签名网站htts访问处理方式非常简单,首先拿到客户端的签名证书,一般通过浏览器就可以导出xxx.cer证书了。然后将拿到的证书文件拷贝到自己的项目中,然后按照如下方式调用或设置。
String responseData = HttpClient.get() //设置请求方式 .url("https://kyfw.12306.cn/otn/") //设置请求地址 .readTimeout(30000) //覆盖设置,读取超时时间 .https(this.getClass().getClassLoader().getResourceAsStream("SRCA.cer")) .execute() //执行 .asString();