OkHttp是一个流行的开源HTTP客户端库,用于在Android和Java应用程序中进行网络请求。它提供了简洁易用的API和丰富的功能,包括同步和异步请求、文件上传和下载、缓存管理等。
下面是一个详细的OkHttp教程,帮助你理解和使用OkHttp:
1、添加依赖:
- 在Android项目中,在app模块的build.gradle文件中添加以下依赖:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
2、发起同步请求:
- 创建OkHttpClient实例
OkHttpClient client = new OkHttpClient();
- 创建Request对象
Request request = new Request.Builder()
.url("http://example.com/api/data")
.build();
- 发起请求并获取Response
try {
Response response = client.newCall(request).execute();
String responseData = response.body().string();
// 处理响应数据
} catch (IOException e) {
e.printStackTrace();
}
3、发起异步请求:
- 创建OkHttpClient实例
OkHttpClient client = new OkHttpClient();
- 创建Request对象
Request request = new Request.Builder()
.url("http://example.com/api/data")
.build();
- 发起异步请求并处理回调
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
// 处理响应数据
}
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
});
4、发送POST请求:
- 创建RequestBody对象
RequestBody requestBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "123456")
.build();
- 创建Request对象并指定POST方法
Request request = new Request.Builder()
.url("http://example.com/api/login")
.post(requestBody)
.build();
- 发起请求并获取Response,处理响应数据同步或异步方式与前面相同
文件上传和下载:
- 文件上传:
MediaType mediaType = MediaType.parse("application/octet-stream");
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(mediaType, file))
.build();
Request request = new Request.Builder()
.url("http://example.com/api/upload")
.post(requestBody)
.build();
- 文件下载:
Request request = new Request.Builder()
.url("http://example.com/files/image.jpg")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
// 保存文件到本地
}
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
});
6、缓存管理:
- 创建OkHttpClient实例,并配置缓存目录和大小:
int cacheSize = 10 * 1024 * 1024; // 10 MB
Cache cache = new Cache(context.getCacheDir(), cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
- 在Request对象中添加缓存控制:
Request request = new Request.Builder()
.url("http://example.com/api/data")
.cacheControl(CacheControl.FORCE_NETWORK) // 强制忽略缓存
.build();
这些是OkHttp的基本使用方法和常见功能示例。你可以根据自己的需求和具体场景进行进一步的学习和扩展。