首页 > 程序开发 > 移动开发 > 其他 >

读OkHttp3文档记录

2017-07-08

读OkHttp3文档记录。今天想着自己去封装一下OkHttp3的,然后发现自己对OkHttp3其实不怎么了解,因为都是用别人的封装,毕竟成为大神是要自己努力的,所以我决定先去了解一下OkHttp3的用法跟文档说明。

读OkHttp3文档记录。今天想着自己去封装一下OkHttp3的,然后发现自己对OkHttp3其实不怎么了解,因为都是用别人的封装,毕竟成为大神是要自己努力的,所以我决定先去了解一下OkHttp3的用法跟文档说明。
首先我们应该在项目中引用okhttp
在okhttp的github中已经说明了怎么引用:
在Maven中引用:


  com.squareup.okhttp3
  okhttp
  3.8.1

或者在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了
由于我是英文不好,所以我就不一一解释了。

相关文章
最新文章
热点推荐