okhttp网络通信简单使用,携带token,在此基础可以自行封装,本文只提供一个简单完整的案例和示例代码
创建一个公用的类方法,提供调用
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
public class JsonRequestSender {
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private OkHttpClient client;
public JsonRequestSender() {
client = new OkHttpClient();
}
public void sendJsonRequest(String url, JSONObject jsonBody, String token, Callback callback) {
RequestBody requestBody = RequestBody.create(JSON, jsonBody.toString());
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("Authorization", "Bearer " + token)
.build();
client.newCall(request).enqueue(new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (callback != null) {
callback.onFailure(e);
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (callback != null) {
callback.onResponse(response);
}
}
});
}
public interface Callback {
void onFailure(IOException e);
void onResponse(Response response) throws IOException, JSONException;
}
}
使用方法
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("key1", "value1");
jsonBody.put("key2", "value2");
} catch (JSONException e) {
e.printStackTrace();
}
String token = "your_token_here";
JsonRequestSender jsonRequestSender = new JsonRequestSender();
jsonRequestSender.sendJsonRequest("https://example.com/api", jsonBody, token, new JsonRequestSender.Callback() {
@Override
public void onFailure(IOException e) {
// 请求失败处理逻辑
}
@Override
public void onResponse(Response response) throws IOException, JSONException {
// 处理响应结果逻辑
String responseData = response.body().string();
JSONObject responseObject = new JSONObject(responseData);
// ...
}
});