OkHttp是一个流行的开源HTTP客户端库,用于在Android和Java应用程序中进行网络请求。它提供了简洁易用的API和丰富的功能,包括同步和异步请求、文件上传和下载、缓存管理等。
下面是一个详细的OkHttp教程,帮助你理解和使用OkHttp:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://example.com/api/data")
.build();
try {
Response response = client.newCall(request).execute();
String responseData = response.body().string();
// 处理响应数据
} catch (IOException e) {
e.printStackTrace();
}
OkHttpClient client = new OkHttpClient();
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();
}
});
RequestBody requestBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "123456")
.build();
Request request = new Request.Builder()
.url("http://example.com/api/login")
.post(requestBody)
.build();
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();
}
});
int cacheSize = 10 * 1024 * 1024; // 10 MB
Cache cache = new Cache(context.getCacheDir(), cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
Request request = new Request.Builder()
.url("http://example.com/api/data")
.cacheControl(CacheControl.FORCE_NETWORK) // 强制忽略缓存
.build();
这些是OkHttp的基本使用方法和常见功能示例。你可以根据自己的需求和具体场景进行进一步的学习和扩展。