okhttp3.0学习
来源:互联网 发布:软件版本说明书模板 编辑:程序博客网 时间:2024/05/22 11:47
这几天学习了下okhttp的使用,公司的网络请求一直是使用的xutils。学习完okhttp基本的用法之后,想想觉得应该记录一下,加深下印象,也方便以后自己回头再来看。水平低,所以如果有同学看到这篇文章,想使用okhttp的话,建议自己使用原生的okhttp,或者使用github上的一些大神提供的封装类库。
一,okhttp使用步骤:
我使用的okhttp的版本是3.6的
1. 首先要给自己的工程添加依赖:
compile ‘com.squareup.okhttp3:okhttp:3.6.0’
2. 代码中使用okhttp的步骤:
1 . 创建okHttpClinet对象,同时可以设置超时时间等 .
private static OkHttpClient okHttpClient = new OkHttpClient().newBuilder() .cookieJar(new CookieJar() { //把cookie保存到内存中,使应用在打开后访问服务器时每次Request的sessionId一致 private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { L.e("saveFromResponse url.host():" + url.host()); cookieStore.put(url.host(), cookies); } @Override public List<Cookie> loadForRequest(HttpUrl url) { L.e("loadForRequest url.host():" + url.host()); List<Cookie> cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList<Cookie>(); } }) .connectTimeout(10, TimeUnit.SECONDS).build();
2 .构建Request
Request.Builder builder = new Request.Builder(); Request.Builder builder1 = builder.get().url(mBaseUrl);
3 .将Request封装为Call
Request request = builder1.build(); Call call = okHttpClient.newCall(request);
4 .调用call的enqueue()方法发出请求
call.enqueue(...);
二,get请求。自己拼接处最终的get请求地址(没有找到其他更好的办法,比如说有个参数集合可以直接设置进去这种)
public static Call baseGet(String action, Map<String, String> map) { if (mBaseUrl == null) { return null; } //构建Request Request.Builder builder = new Request.Builder(); Request.Builder builder1 = builder.get().url(mBaseUrl); if (map != null) { //拼接出最终的get请求地址 StringBuilder mUrl = new StringBuilder(mBaseUrl).append(action + "?"); for (Map.Entry<String, String> entry : map.entrySet()) { mUrl.append("&" + entry.getKey() + "=" + entry.getValue()); } builder1 = builder.get().url(String.valueOf(mUrl)); } Request request = builder1.build(); //将Request封装为Call Call call = okHttpClient.newCall(request); return call;}
三,post请求。使用一个Map把post请求的参数添加到FormBody对象中。
public static Call basePost(String action, Map<String, String> map) { //构建post请求体内容 FormBody.Builder formBody = new FormBody.Builder(); for (Map.Entry<String, String> entry : map.entrySet()) { formBody.add(entry.getKey(), entry.getValue()); } FormBody body = formBody.build(); //构建Request Request.Builder url = new Request.Builder().url(mBaseUrl + action).post(body); Request request = url.build(); //将Request封装为Call Call call = okHttpClient.newCall(request); return call;}
###四,文件上传下载这块就不贴代码了,想看的话请移步这里github地址。本篇文章主要还是学习,大家想使用okhttp的话还是看github上的一些大神的项目吧。谢谢。
0 0
- okhttp3.0学习
- OkHttp3学习
- okhttp3.0
- okhttp3.0
- 关于OkHttp3的学习
- OkHttp3源码学习简要
- OKHttp3学习记录
- okHttp3学习总结
- okhttp3.8.1 学习笔记
- Android OKHttp3 学习摘记
- OKHttp3学习笔记-环境准备
- OKHttp3学习笔记-Http Session
- OKHttp3学习笔记-文件上传
- OKHttp3源码学习(一)
- okHttp3.0下载文件
- android OkHttp3.0
- android OkHttp3.0介绍
- android OkHttp3.0介绍
- linux上编译好的php添加memcache扩展
- OpenStack METADATA不工作的分析方法
- 设置MySQL字符集
- simone牌文本编辑器
- OFBiz 模块化结构分析
- okhttp3.0学习
- Python3 配置安装numpy/scipy/sklearn/tensorflow等第三方库
- Thrift
- 构建 Android 应用程序一定要绕过的 30 个坑
- java和c中的空格符的差别以及C语言字符串变为整形数字代码
- Oracle Connect By Prior(递归查询)
- wifidog 编译https通信、支持ssl加密、https通信
- Java进阶之优秀博文友情链接(2)
- nginx直接连接操作memcache