记录一下okhttp的使用
1. 自定义工具类 (GET,POST请求)
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.4.1</version>
</dependency>
/**
* httpUtil工具类
*/
@Slf4j
public class HttpUtil {
// 公共的OkHttpClient 对象
public static final OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.build();
/**
* get
* @param url
*/
public static ResponseBody sendOkHttpGet(String url){
ResponseBody responseBody = null;
try {
Request request = new Request.Builder().url(url).get().build();
responseBody = client.newCall(request).execute().body();
} catch (IOException e) {
log.error("[send request error]", e);
}
return responseBody;
}
/**
* post
* @param url
* @param body 请求参数
* @return
*/
public static ResponseBody sendOkHttpPost(String url, RequestBody body){
ResponseBody responseBody = null;
try {
Request request = new Request.Builder().url(url).post(body).build();
responseBody = client.newCall(request).execute().body();
} catch (IOException e) {
log.error("[send request error]", e);
}
return responseBody;
}
}
2. POST请求传参
okhttp的post请求可以传递参数,使用FormBody构建
//把请求参数封装到RequestBody里面
FormBody.BuilderformBuilder = new FormBody.Builder();
formBuilder.add("username","admin");
formBuilder.add("password","admin");
RequestBody requestBody = formBuilder.build();
HttpUtil.sendOkHttpPost("请求url", requestBody);
3. ResponseBody
public static void responseBody(String url, String path){
try {
Request request = new Request.Builder().url(url).get().build();
// 请求返回ResponseBody 对象
ResponseBody body = client.newCall(request).execute().body();
// 返回字节
byte[] bytes = body.bytes();
// 返回字符串
String string = body.string();
// 返回输入流
InputStream inputStream = body.byteStream();
}catch (Exception e){
log.error("[error: {}]", e.getMessage());
}
}