android 如何使用okhttp3
时间: 2024-05-12 16:18:46 浏览: 44
Android中okhttp3使用详解
1. 添加依赖
在项目的 build.gradle 文件中添加以下依赖:
```
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}
```
2. 创建 OkHttpClient 实例
在使用 OkHttp3 前,需要创建一个 OkHttpClient 实例,可以使用默认的配置:
```
OkHttpClient client = new OkHttpClient();
```
也可以自定义配置:
```
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build();
```
3. 发送请求
OkHttp3 支持 GET、POST、PUT、DELETE、HEAD、PATCH 等请求方法。
GET 请求:
```
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
String responseBody = response.body().string();
```
POST 请求:
```
RequestBody requestBody = new FormBody.Builder()
.add("username", "test")
.add("password", "123456")
.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
String responseBody = response.body().string();
```
4. 处理响应
OkHttp3 的 Response 对象包含请求的响应信息,可以通过以下方式获取响应内容:
```
String responseBody = response.body().string();
```
如果需要获取响应的头信息,可以使用以下方式:
```
Headers headers = response.headers();
for (int i = 0; i < headers.size(); i++) {
String name = headers.name(i);
String value = headers.value(i);
}
```
如果需要获取响应的状态码,可以使用以下方式:
```
int code = response.code();
```
如果需要判断响应是否成功,可以使用以下方式:
```
boolean isSuccessful = response.isSuccessful();
```
5. 异步请求
使用 execute() 方法发送请求时,会阻塞当前线程,直到请求完成。如果需要异步发送请求,可以使用 enqueue() 方法:
```
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseBody = response.body().string();
// 请求成功
}
});
```
6. 取消请求
如果需要取消请求,可以使用 Call 对象的 cancel() 方法:
```
Call call = client.newCall(request);
call.cancel();
```
7. 配置缓存
OkHttp3 支持配置缓存,可以使用以下方式:
```
Cache cache = new Cache(new File(context.getCacheDir(), "okhttp-cache"), 10 * 1024 * 1024); // 10MB
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
```
以上就是使用 OkHttp3 发送请求的基本流程。
阅读全文