对 okhttp 网络框架的封装 easy-okhttp

Apache
Java 查看源码»
跨平台
2016-12-21
mzllon

疫情之下,程序员如何转型?共享数字化转型加速度,就在微软在线技术峰会>>>

# easy-okhttp

Maven CentralLicense

easy-okhttp是对okhttp3上层封装的网络框架,支持文件上传和下载表单提交(文件和一个参数对应多值),链式调用,并且默认整合Gson,对返回结果多种转换,同时还支持HTTPS单向认证和双向认证等特性。

okhttp3网络框架的流行始于Android,但是在Java后端仍然是Apache HttpClient网络框架,这个框架的缺点在于设计非常的复杂,而且Jar包比较大。因此封装easy-okhttp网络框架是降低对网络操作的难度,更是希望弃用Apache HttpClient,其次也是为了帮助 okhttp3 的推广。

框架特性

  • 仅支持GET和POST两种方式,其他如PUT等不太常用,就暂不支持
  • 基于POST的大文本数据、二进制文件上传,即通过Http Body提交
  • 表单提交,带有文件的表单提交和表单提交支持参数名重复,在后台接收到的是数组或集合
  • 支持session保持
  • 对HTTPS支持单向认证和双向认证
  • 支持同步请求和异步请求,统一的数据处理接口
  • 开箱即用,默认的配置基本上满足需求

框架引入

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();
的码云指数为
超过 的项目
加载中

评论(7)

_笔记本_
_笔记本_
如何更改okhttp默认连接池的连接数量呢
Fover
Fover
看了各种封装自己还是选择retrofit 省的折腾,文档和资料也比较多。
loyal
loyal
更是希望启用Apache HttpClient 你的意思是 启用=弃用吧?
大賢者
大賢者
以为是服务端,结果是HttpClient。。。
老中士
没有演示异步方式 只有post和get太局限了
公孙二狗
公孙二狗
好用
xiaolei123
xiaolei123
这样子会不会阻塞线程呢?

easy-okhttp v1.1.0 新版发布

年后第一个版本维护更新,一直忙于微信会员卡和支付宝会员卡的事情,所以就耽搁到现在才发布新版本。 v1.1.0版本发布更新: 更新默认超时时间单位为秒; 增加超时设置方法,支持自定义时间单位...

2017/03/21 23:41

easy-okhttp 1.0.10-Final 发布

easy-okhttp 1.0.10-Final 发布了,easy-okhttp是一个基于okhtp3的网络工具,目的为了简化okhttp3的使用,解放使用apache-httpclient的同学们,因为apache-httpclient还是蛮复杂的。 更新内容...

2017/01/04 11:21

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

使用OKHttp处理Volley的底层HTTP请求

1) 导入Volley(目前没有官方的jar包,需要自己下载源码编译) 2) 导入OkHttp,okhttp-urlconnection 3) 创建OkHttpStack public class OkHttpStack extends HurlStack { private OkHttp...

2015/09/06 16:49
2.6K
0
Android OkHttp + Retrofit 取消请求的方法

本文链接 前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求。对于OkHttp来说,具体是调用Call的cancel方法。 ...

2019/10/19 19:17
71
0
我最喜欢的 Java HTTP Client:OkHttp 基本用法

先引入依赖 Maven <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.13.1</version> </dependency> Gradle implementation('com.squareup...

2019/01/25 16:35
1.3K
0
使用OkHttp库模拟登录开源中国

做网络爬虫通常离不开两类库(框架),HTTP库和HTML解析库,本文实例演示一下关于HTTP库 OkHttp 的一些用法知识。 Java领域的HTTP库其实比较多,像老牌的Apache旗下的 HttpComponents ,但该...

2018/07/12 17:37
400
0
Could not download okhttp.jar (com.squareup.okhttp3:okhttp:3.8.1)

报错 Unable to resolve dependency for ':app@ReleasesDebug/compileClasspath': Could not download okhttp.jar (com.squareup.okhttp3:okhttp:3.8.1) Open File Show Details 把这些都填上...

2018/12/31 20:05
396
0
关于取消OkHttp请求的问题

一.简介 有时候网络条件不好的情况下,用户会主动关闭页面,这时候需要取消正在请求的http request, OkHttp提供了cancel方法,但是实际在使用过程中发现,如果调用cancel()方法,会回调到Cal...

2019/10/20 08:01
412
0
Eclipse:Unsupported major.minor version 51.0 error

最近在做项目的时候,由于我们提供的 sdk 里面有依赖 OkHttp 和 OkIO,好像从 v2.0 开始,OkHttp 要求 Jdk 1.7。导致 sdk 不能在 JDK 1.6 环境里面运行,为了兼容,我找到了这两个 repo: ht...

2015/08/05 22:18
357
0
Android中流行的第三方库资源收集

1、GSON GSON是将JSON解析成POJO的Java库。GSON也可以将POJO解析成JSON。 2、OkHttp OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默认情况下,OKHttp会自动...

2014/05/02 10:34
234
0
spring注解配置okhttp3

背景 之前在spring上面使用过okhttp:spring传统xml配置okhttp3 Component package com.zyl.config; import okhttp3.ConnectionPool; import okhttp3.Credentials; import okhttp3.OkHttpCli...

2018/12/09 17:45
571
0
使用java开发SDK你可能会用的4个库

使用java开发SDK你可能会用的4个库

2015/08/12 18:49
2.5K
2

没有更多内容

加载失败,请刷新页面

返回顶部
顶部