前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tip | OkHttp使用

Tip | OkHttp使用

作者头像
凌川江雪
发布2019-06-11 19:27:56
7940
发布2019-06-11 19:27:56
举报
文章被收录于专栏:李蔚蓬的专栏
  • OkHttp由Square公司开发,其不仅在接口封装上面做的简单易用, 就连在底层实现上也是自成一派, 比起原生的HttpURLConnection,可以说是有过之而无不及, 现在已经成了广大Android开发者的首选网络通信库。
  • OkHttp项目主页地址:https://github.com/square/okhttp
  • 使用之前,需添加OkHttp库依赖, 打开app/buid.gradle,在dependencies闭包中添加如下内容:
代码语言:javascript
复制
    implementation("com.squareup.okhttp3:okhttp:3.14.0")

添加此依赖,会自动下载两个库:OkHttp库、Okio库(是前者的通信基础)。

  • 注意,添加前最好是访问一下OkHttp项目主页查看当前最新的版本是多少,再在gradle处添加依赖;
下面是OkHttp具体用法
  • 首先,需要创建OkHttpClient实例,如下:
代码语言:javascript
复制
OkHttpClient client = new OkHttpClient();
  • 接下来,如想发起一条HTTP请求,需创建Request对象
代码语言:javascript
复制
Request request = new Request.Builder().build();
  • 当然上述代码只是创建一个空的Request对象, 需要在build()方法之前可连缀很多其他方法丰富此Request对象。
代码语言:javascript
复制
Request request = new Request.Builder()
.url("https://www.baidu.com")
.build();
  • 之后调用OkHttpCilent的newCall()方法创建一个Call对象, 并调用它的execute()方法发送请求, 并获取服务器返回的数据:
代码语言:javascript
复制
Response response = client.newCall(request).execute();

  • request存请求;
  • newCall接收request
  • execute执行request
  • Response对象接收服务器返回的数据;
  • 下面得到返回的具体内容
代码语言:javascript
复制
String responseData = response.body().string();

如果发起一条POST请求,会比GET复杂些;

  • 需先构建RequestBody对象存放待提交的参数
代码语言:javascript
复制
RequestBody requestBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "123456")
.build();
  • 然后在Request.Builder中以RequestBody对象为传入的参数调用post()方法,:
代码语言:javascript
复制
Request request = new Request.Builder()
.url("http://www.baidu.com")
.post(requestBody)
.build();
  • 接下来的操作就和GET请求一样了, 调用execute()方法发送请求并获取服务器返回的数据即可。

另外注意OkHttp可以把最后执行的execute()方法换成enqueue(callback), 即调用enqueue()并接收一个框架提供的okhttp3.Callback接口;

代码语言:javascript
复制
public static void sendOkHttpRequest(String address, okhttp3.Callback callback){
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(address).build();
                    client.newCall(request).enqueue(callback);//enqueue方法内部已经开好了子线程
        }

使用时,复写okhttp3.CallbackonResponse()onFailure()两个方法, 处理成功请求请求失败的情况;

代码语言:javascript
复制
sendOkHttpRequest("https://www.baidu.com", new okhttp3.Callback(){
    @Override
    public void onResponse(Call call, Response response) throws IOException{
        //得到服务器返回的具体数据
        String reponseData = reponse.body().string();
}
    @Override
    public void onFailure(Call call, IOException e){
        //在这里对异常情况进行处理
}
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.06.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下面是OkHttp具体用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档