okhttp的请求有同步请求,也有异步请求。异步请求的使用场景更为广阔。
同步请求
public class OkHttp {
public static void main(String[] args) throws Exception {
//创建一个OkHttpClient对象
int timeout = 10 * 1000;
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.connectTimeout(timeout, TimeUnit.MILLISECONDS)
.readTimeout(timeout, TimeUnit.MILLISECONDS)
.writeTimeout(timeout, TimeUnit.MILLISECONDS)
.build();
String url = "测试接口地址";
Map<String,Object> headersMap = new HashMap<>();
headersMap.put("Content-Type","application/json");
Map<String ,Object> bodyMap = new HashMap<>();
bodyMap.put("username", "xiaoming");
bodyMap.put("password", "123");
//构建请求体
RequestBody requestBody = RequestBody.create(null,JSON.toJSONString(bodyMap));
//构建请求头
Headers.Builder headerBuilder = new Headers.Builder();
headersMap.forEach((key,value)-> headerBuilder.add(key,value.toString()));
Headers headers = headerBuilder.build();
//创建请求
Request request = new Request.Builder()
.url(url)
.headers(headers)
.post(requestBody)
.build();
Response response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
try {
assert response.body() != null;
String responseBody = response.body().string();
System.out.println(responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
异步请求
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.deploy.net.URLEncoder;
import okhttp3.*;
import org.hibernate.validator.internal.metadata.aggregated.rule.OverridingMethodMustNotAlterParameterConstraints;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class OkHttp {
public static void main(String[] args) throws Exception {
//创建一个OkHttpClient对象
int timeout = 10 * 1000;
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.connectTimeout(timeout, TimeUnit.MILLISECONDS)
.readTimeout(timeout, TimeUnit.MILLISECONDS)
.writeTimeout(timeout, TimeUnit.MILLISECONDS)
.build();
String url = "http://wzy.f5tv.com:8081/admin/query2";
Map<String,Object> headersMap = new HashMap<>();
headersMap.put("Content-Type","application/json");
Map<String ,Object> bodyMap = new HashMap<>();
bodyMap.put("username", "xiaoming");
bodyMap.put("password", "123");
//构建请求体
RequestBody requestBody = RequestBody.create(null,JSON.toJSONString(bodyMap));
//构建请求头
Headers.Builder headerBuilder = new Headers.Builder();
headersMap.forEach((key,value)-> headerBuilder.add(key,value.toString()));
Headers headers = headerBuilder.build();
//创建请求
Request request = new Request.Builder()
.url(url)
.headers(headers)
.post(requestBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("请求失败");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
System.out.println(response.body().string());
}
System.out.println("请求成功");
}
});
}
}