使用的一般步骤
- 构建客户端OkHttpClient
- 构建请求Request
- 生成call对象
- 调用Call发送同步请求或者异步
coding
pom.xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
public class OkhttpTest {
static OkHttpClient client;
public static void main(String[] args) throws IOException {
client = new OkHttpClient();
sendGetRequest();
sendPostRequest();
}
private static void sendPostRequest() throws IOException {
String url = "https://xxxurl";
RequestBody body = RequestBody.create("content", MediaType.parse("text/plain;charset=utf-8"));
// 这里使用提交表单类型 FormBody 是 RequestBody 子类
// FormBody formBody = new FormBody.Builder().add("user", "nq").add("x", "y").build();
Request postRequest = new Request.Builder().url(url).post(body).build();
// Request postRequest = new Request.Builder().url(url).post(formBody).build();
Call call = client.newCall(postRequest);
call.execute();
call.enqueue(new Callback() {
public void onFailure(@NotNull Call call, @NotNull IOException e) {
}
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
}
});
}
private static void sendGetRequest() throws IOException {
String url = "https://www.baidu.com";
Request getReq = new Request.Builder().url(url).get().build();
Call cal = client.newCall(getReq);
// 同步执行
System.out.println(cal.execute().body().string());
// 异步执行
cal.enqueue(new Callback() {
public void onFailure(@NotNull Call call, @NotNull IOException e) {
}
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
}
});
}
}