android 如何使用okhttp
时间: 2024-02-23 11:48:40 浏览: 120
Android使用okHttp(get方式)登录
使用 OkHttp 进行网络请求需要三个步骤:
1. 添加依赖
在项目的 `build.gradle` 文件中添加以下依赖:
```groovy
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
```
2. 创建 OkHttp 实例
创建一个全局的 OkHttp 实例,可以通过单例模式或者依赖注入的方式创建,这里以单例模式为例:
```java
public class OkHttpClientInstance {
private static OkHttpClient sInstance;
public static synchronized OkHttpClient getInstance() {
if (sInstance == null) {
sInstance = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();
}
return sInstance;
}
}
```
在上述代码中,我们设置了连接、读取和写入超时时间为 15 秒。
3. 发起网络请求
使用 OkHttp 发起网络请求的方式有很多,这里介绍最常用的两种方式:同步请求和异步请求。
同步请求:
```java
public void run() {
OkHttpClient client = OkHttpClientInstance.getInstance();
Request request = new Request.Builder()
.url("https://www.example.com")
.build();
try (Response response = client.newCall(request).execute()) {
String responseData = response.body().string();
Log.d(TAG, "responseData: " + responseData);
} catch (IOException e) {
e.printStackTrace();
}
}
```
在上述代码中,我们创建了一个 `Request` 对象,并且通过 OkHttp 的 `newCall()` 方法将其转换为 `Call` 对象,然后调用 `execute()` 方法发起同步请求。
异步请求:
```java
public void run() {
OkHttpClient client = OkHttpClientInstance.getInstance();
Request request = new Request.Builder()
.url("https://www.example.com")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
Log.d(TAG, "responseData: " + responseData);
}
});
}
```
在上述代码中,我们同样创建了一个 `Request` 对象,并且通过 OkHttp 的 `newCall()` 方法将其转换为 `Call` 对象,然后调用 `enqueue()` 方法发起异步请求,并且通过 `Callback` 接口回调获取响应结果。
以上就是使用 OkHttp 进行网络请求的基本步骤。需要注意的是,在使用 OkHttp 进行网络请求时,一定要在子线程中进行,否则会抛出异常。
阅读全文