使用OkHttp

使用OkHttp

在当今开源盛行的今天,有许多出色的网络通信库,其中不乏包括HttpURLConnection,HttpClient,OkHttp,而OkHttp无疑是做的最出色的一个。

Okhttp

Okhttp是由大名鼎鼎的Square公司开发的,Okhttp不仅走起接口封装上面做的简单易用,就连底层的实现上也是自成一派,比起原生的HttpURLCommection,可以说是有过之而无不及。OkHttp项目主页地址https://github.com/square/okhttp。

使用之前的准备
#在使用之前,我们需要在项目中添加OkHttp库的依赖。编辑app/build.gradle文件,在dependencies闭包中添加如下内容:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'junit:junit:4.12'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'org.litepal.android:core:1.4.1'
    implementation 'com.squareup.okhttp3:okhttp:3.4.1'
    implementation 'com.google.code.gson:gson:2.7'


    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'org.litepal:LitePal:1.2.0'

}

添加上述依赖会自动下载两个库,一个是OkHttp库,一个是Okio库,后者是前者的通信基础。

OkHttp具体用法
首先需要创建一个OkHttpClient的实例,如下所示:

 OkHttpClient client = new OkHttpClient();

接下来如果想要发起一条HTTP请求,就需要创建一个Request对象:

Request request = new Request.Builder().build();

当然,上述代码只是创建了一个空的Request对象,我们可以在最终的build()方法之前连缀很多其他方法来丰富这个Request对象。比如可以通过url()方法来设置目标的网络地址:

Request request = new Request.Builder().url(address).build();

之后调用OkHttpClient的newCall()方法创建一个Call对象,并调用它的execute()方法来发送请求并获取服务器返回的数据

Response response = client.newCall(request).execute();

其中Response对象就是服务器返回的数据了,我们可以使用如下写法来得到返回的具体内容:

String reponseData = response.body().string();

Okhttp发起一条Get请求

OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(address).build();
        client.newCall(request).enqueue(callback);

以上是发起一条Get请求,如果是一条Post的请求,情况则有一点不同
首先构建一个request body对象,存放待提交的数据

 RequestBody requestBody = new FormBody.Builder().add("username","admin").add("password","123456").build();

然后在Request.Builder中调用一下post()方法,并将RequestBody对象传入:

Request request = new Request.Builder().url(address).post(requestBody).build();

OkHttp发起一条Post请求

 OkHttpClient client = new OkHttpClient();
        //构建一个requestBody对象存放待提交的参数
        RequestBody requestBody = new FormBody.Builder().add("username","admin").add("password","123456").build();
        //调用post方法,将requestBody对象传入
        Request request = new Request.Builder().url(address).post(requestBody).build();
        client.newCall(request).enqueue(callback);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值