android okhttp版本,Android okhttp3 框架常用功能使用 4.1.0 版本

本文介绍了Android中OkHttp3 4.1.0版本的使用,包括GET和POST请求的同步与异步实现,键值对、字符串、表单和多文件上传,以及图片下载。OkHttp取代了HttpClient,成为Android4.4后的首选网络库。详细示例代码展示了如何进行网络请求、文件操作和UI更新。
摘要由CSDN通过智能技术生成

本来是想围绕着HttpClient讲解的,后来发先Android4.4之后okhttp代替了hc,所以将不再讲解hc

okhttp的简单使用,主要包含:一般的get请求

一般的post请求

基于Http的文件上传

文件下载

加载图片

支持请求回调,直接返回对象、对象集合

支持session的保持

GitHub地址

OkHttp的GitHub地址是:OkHttp

依赖库导入

使用前需要先在项目中添加OkHttp的依赖库,在对应的Module的gradle中添加如下语句,目前最新应该是4.1.0implementation("com.squareup.okhttp3:okhttp:4.1.0")

添加网络权限

一、GET请求

OkHttp支持同步和异步的网络请求,demo代码如下:

同步GET请求public void httpSyncGetTest(){

OkHttpClient okHttpClient = new OkHttpClient();

//2.创建Request对象,设置一个url地址(百度地址),设置请求方式。

Request request = new Request.Builder()

.url("http://www.niwoxuexi.com")

.get()

.build();

//3.创建一个call对象,参数就是Request请求对象

Call call = okHttpClient.newCall(request);

//4.同步调用会阻塞主线程,这边在子线程进行

new Thread(new Runnable() {

@Override

public void run() {

try {

//同步调用,返回Response,会抛出IO异常

Response response = call.execute();

} catch (IOException e) {

e.printStackTrace();

}

}

}).start();

}

异步GET请求public void httpAsyncGetTest(){

//1.创建OkHttpClient对象

OkHttpClient okHttpClient = new OkHttpClient();

//2.创建Request对象,设置一个url地址(百度地址),设置请求方式。

Request request = new Request.Builder()

.url("http://www.baidu.com")

.get()

.build();

//3.创建一个call对象,参数就是Request请求对象

Call call = okHttpClient.newCall(request);

//4.请求加入调度,重写回调方法

call.enqueue(new Callback() {

//请求失败执行的方法

@Override

public void onFailure(Call call, IOException e) {

String err = e.getMessage().toString();

}

//请求成功执行的方法

@Override

public void onResponse(Call call, Response response) throws IOException {

final String rtn = response.body().string();

runOnUiThread(new Runnable() {

@Override

public void run() {

}

);

}

});

}

需要注意的是,异步调用的回调函数是在子线程当中的,因为需要用Handler或者runOnUiThread来更新UI

二、POST类型

在OkHttp中用Post方法向服务器发送一个请求体时,请求体需要是一个RequestBody。这个请求体可以是:

key-value:键值对类型

String:字符串类型

For

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个 OkHttp3 工具类可以方便我们在 Android 应用中使用 OkHttp3 发送网络请求。下面是一个简单的 OkHttp3 工具类示例: ```java public class OkHttpHelper { private static OkHttpHelper mInstance; private OkHttpClient mOkHttpClient; private OkHttpHelper() { mOkHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .build(); } public static OkHttpHelper getInstance() { if (mInstance == null) { synchronized (OkHttpHelper.class) { if (mInstance == null) { mInstance = new OkHttpHelper(); } } } return mInstance; } public void get(String url, Callback callback) { Request request = new Request.Builder() .url(url) .get() .build(); mOkHttpClient.newCall(request).enqueue(callback); } public void post(String url, Map<String, String> params, Callback callback) { FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String, String> entry : params.entrySet()) { builder.add(entry.getKey(), entry.getValue()); } RequestBody requestBody = builder.build(); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); mOkHttpClient.newCall(request).enqueue(callback); } } ``` 使用 OkHttpHelper 发送网络请求的示例代码: ```java OkHttpHelper.getInstance().get("https://www.example.com", new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); // 处理请求结果 } }); ``` 上述示例代码实现了 get 和 post 请求,可以通过调用对应的方法发送网络请求。在构造 OkHttpClient 实例时,我们设置了连接超时、读取超时和写入超时的时间为 10 秒。在 get 和 post 方法中,我们使用 OkHttp3 的 Request 和 RequestBody 构建请求,然后通过 OkHttpClient 实例发送请求并获取响应结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值