OkHttp 是一个非常受欢迎的网络请求库,它支持同步阻塞调用和异步调用,以及连接池、GZIP 压缩、响应缓存等功能,在 Android 和 Java 应用中,OkHttp 被广泛用于发起 HTTP 请求,在实际开发中,我们经常需要发送 JSON 格式的数据,本文将详细介绍如何使用 OkHttp 传递 JSON 数据。
确保你的项目中已经添加了 OkHttp 的依赖,如果你使用的是 Gradle 构建系统,可以在 build.gradle
文件中添加以下依赖:
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
接下来,我们将介绍如何使用 OkHttp 发送 JSON 数据,OkHttp 提供了 RequestBody
类来处理请求体,我们可以使用 RequestBody.create()
方法创建一个 JSON 类型的请求体,以下是一个发送 POST 请求并传递 JSON 数据的示例:
import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Call; import okhttp3.Response; public class OkHttpExample { public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); // 创建 JSON 数据 String json = "{"key1":"value1", "key2":"value2"}"; // 创建请求体 RequestBody body = RequestBody.create(json, JSON); // 创建请求对象 Request request = new Request.Builder() .url("http://your.api/endpoint") .post(body) .build(); // 发起请求 Call call = client.newCall(request); try { Response response = call.execute(); if (response.isSuccessful()) { // 处理响应 String responseData = response.body().string(); System.out.println(responseData); } else { // 处理错误 System.out.println("Error: " + response.code()); } } catch (IOException e) { e.printStackTrace(); } } }
在这个例子中,我们首先创建了一个 OkHttpClient 实例,我们定义了 JSON 类型的 MediaType,接着,我们创建了一个 JSON 字符串,并使用它来创建一个请求体,之后,我们构建了一个请求对象,设置请求方法为 POST,并添加了我们刚刚创建的请求体,我们通过调用 client.newCall()
方法发起请求,并处理响应。
如果你需要发送异步请求,可以使用 enqueue()
方法代替 execute()
方法,这样,请求将在后台线程中执行,而不会阻塞当前线程,你可以提供一个回调接口来处理响应或错误。
call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 处理请求失败 e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { // 处理响应 String responseData = response.body().string(); System.out.println(responseData); } else { // 处理错误 System.out.println("Error: " + response.code()); } } });
OkHttp 提供了强大的功能来支持 JSON 数据的传输,通过使用 RequestBody
和 MediaType
,我们可以轻松地创建和发送 JSON 请求,无论是同步还是异步请求,OkHttp 都能满足我们的需求。