读OkHttp3文档记录
来源:互联网 发布:关于养生之道的软件 编辑:程序博客网 时间:2024/05/22 00:18
今天想着自己去封装一下OkHttp3的,然后发现自己对OkHttp3其实不怎么了解,因为都是用别人的封装,毕竟成为大神是要自己努力的,所以我决定先去了解一下OkHttp3的用法跟文档说明。
首先我们应该在项目中引用okhttp
在okhttp的github中已经说明了怎么引用:
在Maven中引用:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.8.1</version></dependency>
或者在Gradle中引用:
compile 'com.squareup.okhttp3:okhttp:3.8.1'
然后去okhttp的官网看一下用法:
首先是Get请求
OkHttpClient client = new OkHttpClient();String run(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string();}
然后是Post请求
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");OkHttpClient client = new OkHttpClient();String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string();}
简单解释一下post方法吧,毕竟get方法简单到炸,post方法需要发送请求参数是json格式的,那么就是上文中的“application/json;charset=utf-8”,不是的话,就需要把这个字段改过来就好了
这就是基本用法了,超级简单有木有~
经过尝试,需要注意的是,当使用同步请求的时候,需要在子线程中运行,不然是会报异常的,而异步则不需要在子线程中调用,因为CallBack中回调的方法onResponse和onFailure都是在子线程中调用的,当然,无论是同步还是异步,最终返回的信息都存在Response中,我们可以通过Response获取code、headers、message还有body,我们需要的返回数据就在body中,只需要调用response.body().string();就可以获取到了
然后我们再看看比较重要而且常用的方法:
- 在Post请求中,我们需要构建一个RequestBody对象,这个就是我们要发送到服务端的请求参数,除了RequestBody我们其实还可以构建一个FormBody对象,直接构建FormBody对象会更加简单,因为FormBody是继承RequestBody的,而且就是用来发送表单数据的
- 然后还有一个请求对象—MultipartBody,它可以同时传键值对参数和File对象,我找到里面的源码看了一下:第一个方法就是传键值对,而第二个就是传文件的,看到那个filename了吗,没错就是它,第三个参数我们构建一个RequestBody上传文件就可以了,具体的创建方法可以参考下面的代码:
MultipartBody body = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("key","value").addFormDataPart("file",file.getName(),RequestBody.create(MediaType.parse("file/*"), file)).build();
- 然后还有一个重要的对象,就是Request对象,我们请求都是要创建一个Request对象的,必不可少,这个对象就是构建一个请求体,里面包含有请求头、请求链接、请求参数等,构建好了我们才可以用OkHttpClient.newCall(Request).execute(),或者OkHttpClient.newCall(Request).enqueue(CallBace)去访问链接
- 此外还有一个需要注意的,就是OkHttpClient.Builder,我们可以同过这个Builder实现自定义构建Client,就像下面代码一样:
OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .build();
这里我只是设置了请求的超时时间,里面还有其他的方法,在文档均有介绍:
方法还是挺多的,设置好了就直接调用最后一个build()方法就可以创建Client了
由于我是英文不好,所以我就不一一解释了,毕竟我都要靠翻译慢慢看的,最后把文档的地址给到大家吧:OkHttp3文档
- 读OkHttp3文档记录
- OKHttp3学习记录
- Android OkHttp3使用http2问题记录
- OkHttp3的使用记录(上)
- OkHttp3的使用记录(下)
- httpclient httpurlconnection okhttp3 okhttputil okgo [记录]
- OkHttp3
- OkHttp3
- OkHttp3
- OkHttp3
- OkHttp3
- Okhttp3
- okHttp3
- OkHttp3
- 文档记录
- 文档记录
- Retrofit2.0+okhttp3两种缓存方式记录
- 禁止保留文档记录
- iOS
- ueditor抓取文件配置
- FFmpeg架构之I/O模块分析——讲得还行,主要是架构
- sleep时间过长处理方法
- JS中使用"data-"开头的属性及data()方法实现自定义属性
- 读OkHttp3文档记录
- Scaling Memcache At Facebook
- RabbitMq(三)
- iOS NSFileManager管理目录路径(3)——文件大小
- 3.LabVIEW_USB_I2C_AM2321B
- AutoIt:Windows自动化测试
- scala map排序
- js的包装对象
- (7)约瑟夫问题