OkHttp通用简单封装

CommonOkHttp--通用OkHttp简单封装

一个用于Java应用(非安卓)的OkHttp的简单封装
github地址 https://keran213539.github.io/CommonOkHttp/
maven引入

<dependency>
    <groupId>com.github.keran213539</groupId>
    <artifactId>commonOkHttp</artifactId>
    <version>0.2</version>
</dependency>

折腾了一天,终于提交到maven中央仓库了
将你自己的项目发布到maven中央仓库

背景

OkHttp,现在很火的一个Apache httpClient的替代品,说替代可能不太合适,至少是同类型的库吧.
最近想学习使用下,并找一个通用工具在新项目中使用(老项目使用httpClient).既然它现在这么火,别人写好的通用工具应该很好找(嗯,拿来主意),结果一番搜索后,确实找到不少,但都是Android的,安卓的组件封装进去了不少,还有下载,下载进度...服务端根本用不到啊...@%#$%#$ 好吧,找不到就自己写...
在这里向大家介绍一个不错的Android的http框架 OkGo,我参考了其中的https工具还有其他部分代码

如何使用

通过spring工厂

参考 com.github.keran213539.commonOkHttp.test.TestWithSpring, 在spring 配制文件中增加:

    <bean id="httpClientDefaultHttps" class="com.github.keran213539.commonOkHttp.CommonOkHttpClientFactory" />
    
    <bean id="httpClientNotSafe" class="com.github.keran213539.commonOkHttp.CommonOkHttpClientFactory">
        <property name="unSafe" value="true" />
    </bean>
    
    <bean id="httpClientCustomCertificate" class="com.github.keran213539.commonOkHttp.CommonOkHttpClientFactory">
        <property name="checkHostname" value="false" />
        <property name="certificateFilePaths">
            <list>
                <value>classpath*:cers/jianshu.cer</value>
            </list>
        </property>
    </bean>

通过spirng获取对应的bean使用

通过Builder

参考 com.github.keran213539.commonOkHttp.test.TestWithBuilder

    // 默认CA方式
    CommonOkHttpClient defaultHttps = new CommonOkHttpClientBuilder().build();
    // 不安全
    CommonOkHttpClient httpClientNotSafe = new CommonOkHttpClientBuilder().unSafe(true).build();
    // 指定信任证书
    List<URL> certificateFilePaths = new ArrayList<>();
    certificateFilePaths.add(ResourceUtils.getURL("classpath:cers/jianshu.cer"));
    CommonOkHttpClient httpClientCustomCertificate = new CommonOkHttpClientBuilder().checkHostname(false).certificateFilePaths(certificateFilePaths).build();

方法说明

String get(String url, IAsyncCallback callback)
发送 get 请求, 有 callback为异步,callback传null为同步;异步时返回null
String post(String url, IAsyncCallback callback)
使用无参方式发送post请求, 有 callback为异步,callback传null为同步;异步时返回null
String post(String url,String jsonStr, IAsyncCallback callback)
使用json方式发送post请求, 有 callback为异步,callback传null为同步;异步时返回null
String post(String url, Map<String, String> prarm, IAsyncCallback callback)
使用传统参数方式发送post请求, 有 callback为异步,callback传null为同步;异步时返回null
<T extends UploadFileBase> String post(String url, Map<String, String> prarm, List<T> files, IAsyncCallback callback)
文件上传(支持多文件)

关于测试

除了使用指定证书加解密数据的方式, 暂时没有条件测试,其他均已测试过,目前已知微信支付的退款需要使用这种方式,在上家公司做了微信支付,当时用的Apache HttpClient,之后会找机会测试
JUnit的测试中删除了部分在公网没有找到合适的测试环境的代码(部分测试环境我是在本机模拟的环境),如使用自签证书的,不安全的方式,上传等,大家可以自签个证书部署为https自测
代码中自定义信任证书的部分,删除了一些其他环境的证书,只保留了简书的证书作为代码示例

OkHttp是一个开源的HTTP客户端库,它封装了平台之间的差异性,为我们提供了方便的接口来发送HTTP请求和处理响应。当我们使用OkHttp时,可以使用封装类来简化使用过程。 OkHttp封装类主要包括以下几个方面: 1. 初始化OkHttpClient:首先,我们需要创建一个OkHttpClient对象,用于发送HTTP请求。在封装类中,可以在构造方法中进行OkHttpClient的初始化设置,比如设置超时时间、添加拦截器等。 2. 发送GET请求:通过封装类,我们可以定义一个方法来发送GET请求。该方法接收一个URL作为参数,使用OkHttpClient来创建一个Request对象,并通过该对象发送异步的GET请求。在回调中处理服务器响应结果,并返回给调用者。 3. 发送POST请求:类似于GET请求,我们可以封装一个方法来发送POST请求。该方法接收一个URL和需要发送的数据作为参数,使用OkHttpClient创建一个RequestBody对象,并通过该对象发送异步的POST请求。同样,在回调中处理响应结果,并返回给调用者。 4. 添加请求头:在某些情况下,我们可能需要添加请求头来发送自定义的信息。封装类可以提供一个方法,接收一个字符串类型的键值对参数,用于添加自定义的请求头。 5. 异步请求:OkHttp的请求是异步执行的,默认情况下在子线程中发送请求并在主线程中处理结果。封装类可以将异步请求的结果通过回调的方式返回给调用者,方便处理响应结果。 通过封装类,我们可以将OkHttp的使用变得更简单、更便捷。可以将一些通用的处理逻辑提取出来,在封装类中进行统一处理,并对外提供更友好的接口。这样可以减少代码的重复性,提高开发效率。同时,封装类还可以对请求进行统一的异常处理、日志打印等操作,方便排查问题和调试。总之,OkHttp封装类可以让我们更好地利用OkHttp的强大功能,提升开发效率和代码可维护性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值