# okhttp-utils
>由于个人原因,现已停止维护。
对okhttp的封装类,okhttp见:[https://github.com/square/okhttp](https://github.com/square/okhttp).
目前对应okhttp版本`3.3.1`.
## 用法
* Android Studio
```
compile 'com.zhy:okhttputils:2.6.2'
```
* Eclipse
下载最新jar:[okhttputils-2\_6\_2.jar](okhttputils-2_6_2.jar?raw=true)
注:需要同时导入okhttp和okio的jar,下载见:[https://github.com/square/okhttp](https://github.com/square/okhttp).
## 目前对以下需求进行了封装
* 一般的get请求
* 一般的post请求
* 基于Http Post的文件上传(类似表单)
* 文件下载/加载图片
* 上传下载的进度回调
* 支持取消某个请求
* 支持自定义Callback
* 支持HEAD、DELETE、PATCH、PUT
* 支持session的保持
* 支持自签名网站https的访问,提供方法设置下证书就行
## 配置OkhttpClient
默认情况下,将直接使用okhttp默认的配置生成OkhttpClient,如果你有任何配置,记得在Application中调用`initClient`方法进行设置。
```java
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
OkHttpClient okHttpClient = new OkHttpClient.Builder()
// .addInterceptor(new LoggerInterceptor("TAG"))
.connectTimeout(10000L, TimeUnit.MILLISECONDS)
.readTimeout(10000L, TimeUnit.MILLISECONDS)
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
}
}
```
别忘了在AndroidManifest中设置。
## 对于Cookie(包含Session)
对于cookie一样,直接通过cookiejar方法配置,参考上面的配置过程。
```
CookieJarImpl cookieJar = new CookieJarImpl(new PersistentCookieStore(getApplicationContext()));
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cookieJar(cookieJar)
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
```
目前项目中包含:
* PersistentCookieStore //持久化cookie
* SerializableHttpCookie //持久化cookie
* MemoryCookieStore //cookie信息存在内存中
如果遇到问题,欢迎反馈,当然也可以自己实现CookieJar接口,编写cookie管理相关代码。
此外,对于持久化cookie还可以使用[https://github.com/franmontiel/PersistentCookieJar](https://github.com/franmontiel/PersistentCookieJar).
相当于框架中只是提供了几个实现类,你可以自行定制或者选择使用。
## 对于Log
初始化OkhttpClient时,通过设置拦截器实现,框架中提供了一个`LoggerInterceptor `,当然你可以自行实现一个Interceptor 。
```
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new LoggerInterceptor("TAG"))
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
```
## 对于Https
依然是通过配置即可,框架中提供了一个类`HttpsUtils`
* 设置可访问所有的https网站
```
HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
```
* 设置具体的证书
```
HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(证书的inputstream, null, null);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager))
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
```
* 双向认证
```
HttpsUtils.getSslSocketFactory(
证书的inputstream,
本地证书的inputstream,
本地证书的密码)
```
同样的,框架中只是提供了几个实现类,你可以自行实现`SSLSocketFactory`,传入sslSocketFactory即可。
##其他用法示例
### GET请求
```java
String url = "http://www.csdn.net/";
OkHttpUtils
.get()
.url(url)
.addParams("username", "hyman")
.addParams("password", "123")
.build()
.execute(new StringCallback()
{
@Override
public void onError(Request request, Exception e)
{
}
@Override
public void onResponse(String response)
{
}
});
```
### POST请求
```java
OkHttpUtils
.post()
.url(url)
.addParams("username", "hyman")
.addParams("password", "123")
.build()
.execute(callback);
```
### Post JSON
```java
OkHttpUtils
.postString()
.url(url)
.content(new Gson().toJson(new User("zhy", "123")))
.mediaType(MediaType.parse("application/json; charset=utf-8"))
.build()
.execute(new MyStringCallback());
```
提交一个Gson字符串到服务器端,注意:传递JSON的时候,不要通过addHeader去设置contentType,而使用`.mediaType(MediaType.parse("application/json; charset=utf-8"))`.。
### Post File
```java
OkHttpUtils
.postFile()
.url(url)
.file(file)
.build()
.execute(new MyStringCallback());
```
将文件作为请求体,发送到服务器。
### Post表单形式上传文件
```java
OkHttpUtils.post()//
.addFile("mFile", "messenger_01.png", file)//
.addFile("mFile", "test1.txt", file2)//
.url(url)
.params(params)//
.headers(headers)//
.build()//
.execute(new MyStringCallback());
```
支持单个多个文件,`addFile`的第一个参数为文件的key,即类别表单中`<input type="file" name="mFile"/>`的name属性。
### 自定义CallBack
目前内部包含`StringCallBack`,`FileCallBack`,`BitmapCallback`,可以根据自己的需求去自定义Callback,例如希望回调User对象:
```java
public abstract class UserCallback extends Callback<User>
{
@Override
public User parseNetworkResponse(Response response) throws IOException
{
String string = response.body().string();
User user = new Gson().fromJson(string, User.class);
return user;
}
}
OkHttpUtils
.get()//
.url(url)//
.addParams("username", "hyman")//
.addParams("password", "123")//
.build()//
.execute(new UserCallback()
{
@Override
public void onError(Request request, Exception e)
{
mTv.setText("onError:" + e.getMessage());
}
@Override
public void onResponse(User response)
{
mTv.setText("onResponse:" + response.username);
}
});
```
通过`parseNetworkResponse `回调的response进行解析,该方法运行在子线程,所以可以进行任何耗时操作,详细参见sample。
### 下载文件
```java
OkHttpUtils//
.get()//
.url(url)//
.build()//
.execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson-2.2.1.jar")//
{
@Override
public void inProgress(float progress)
{
mProgressBar.setProgress((int) (100 * progress));
}
@Override
public void onError(Request request, Exception e)
{
Log.e(TAG, "onError :" + e.getMessage());
}
@Override
public void onResponse(File file)
{
Log.e(TAG, "onResponse :" + file.getAbsolutePath());
}
});
```
注意下载文件可以使用`FileCallback`,需要传入文件需要保存的文件夹以及文件名。
### 显示图片
```java
OkHttpUtils
.get()//
.url(url)//
.build()//
.execute(new BitmapCallback()
{
@Override
public void onError(Request request, Exception e)
{
mTv.setText("onError:" + e.getMessage());
}
@Override
public void onResponse(Bitmap bitmap)
{
mImageView.setImageBitmap(bitmap);
}
});
```
显示图片,回调传入`BitmapCallback`即可。
### 上
没有合适的资源?快使用搜索试试~ 我知道了~
鸿洋大神的OkHttp源码,可导入直接使用
共88个文件
java:44个
xml:15个
gradle:4个
需积分: 37 31 下载量 33 浏览量
2017-11-30
11:25:24
上传
评论
收藏 193KB ZIP 举报
温馨提示
鸿洋大神的OkHttp源码,可导入直接使用,提供 get post 带参数 不带参数,图片,上传资源等等
资源推荐
资源详情
资源评论
收起资源包目录
okhttputils-master.zip (88个子文件)
okhttputils-master
gradlew.bat 2KB
gradlew 5KB
gradle.properties 855B
sample-okhttp
proguard-rules.pro 4KB
src
androidTest
java
com
zhy
sample_okhttp
ApplicationTest.java 356B
main
res
menu
menu_main.xml 392B
mipmap-hdpi
ic_launcher.png 3KB
values
strings.xml 183B
styles.xml 194B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xhdpi
ic_launcher.png 5KB
layout
activity_main.xml 4KB
values-w820dp
dimens.xml 358B
assets
srca.cer 670B
zhy_server.cer 861B
zhy_client.bks 2KB
java
com
zhy
sample_okhttp
FlowLayout.java 4KB
User.java 431B
JsonGenericsSerializator.java 405B
MainActivity.java 11KB
MyApplication.java 3KB
ListUserCallback.java 552B
UserCallback.java 507B
AndroidManifest.xml 991B
.gitignore 7B
sample-okhttp.iml 9KB
build.gradle 889B
LICENSE 11KB
gradle
wrapper
gradle-wrapper.jar 49KB
gradle-wrapper.properties 237B
.idea
gradle.xml 921B
runConfigurations.xml 564B
misc.xml 3KB
vcs.xml 180B
.name 12B
copyright
profiles_settings.xml 74B
modules.xml 530B
compiler.xml 709B
okhttputils
proguard-rules.pro 672B
src
androidTest
java
com
zhy
http
okhttp
ApplicationTest.java 354B
main
java
com
zhy
http
okhttp
log
LoggerInterceptor.java 5KB
https
HttpsUtils.java 7KB
OkHttpUtils.java 6KB
builder
OkHttpRequestBuilder.java 1KB
GetBuilder.java 2KB
HasParamsable.java 254B
HeadBuilder.java 426B
PostFileBuilder.java 755B
PostStringBuilder.java 757B
OtherRequestBuilder.java 908B
PostFormBuilder.java 2KB
request
PostStringRequest.java 1KB
GetRequest.java 590B
OkHttpRequest.java 2KB
PostFormRequest.java 4KB
PostFileRequest.java 2KB
OtherRequest.java 2KB
RequestCall.java 3KB
CountingRequestBody.java 2KB
callback
Callback.java 1KB
IGenericsSerializator.java 183B
StringCallback.java 351B
GenericsCallback.java 874B
FileCallBack.java 2KB
BitmapCallback.java 426B
utils
L.java 286B
Exceptions.java 258B
Platform.java 2KB
ImageUtils.java 5KB
cookie
CookieJarImpl.java 914B
store
HasCookieStore.java 151B
PersistentCookieStore.java 9KB
CookieStore.java 341B
SerializableHttpCookie.java 2KB
MemoryCookieStore.java 2KB
AndroidManifest.xml 124B
.gitignore 7B
okhttputils.iml 8KB
build.gradle 1KB
okhttp-utils.iml 943B
.gitignore 109B
OkHttpManager.iml 944B
README.md 9KB
okhttputils-2_6_2.jar 56KB
settings.gradle 41B
build.gradle 538B
共 88 条
- 1
资源评论
阿米阿米哄
- 粉丝: 2
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功