前言:
OKHttp是一个处理网络请求的开源项目,简单而快速的使用方式,可以使用它做:
get,post请求,文件的上传下载,加载图片(内部会图片大小自动压缩),支持请求回调,
直接返回对象、对象集合,支持session的保持
使用:
引入依赖包
<!--okhttp3-->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
使用工具说明,可以直接复制使用
import com.alibaba.fastjson.JSONObject;
import okhttp3.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* okhttp工具类
* @author wmb
*/
public class OkHttp3Util {
//JSON
private static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8");
//标准格式
private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
/**
* 发送GET
* @param url 地址
* @param params 参数
* @return
*/
public static String sendGet(String url,Map<String, String> params) {
OkHttpClient client = new OkHttpClient();
StringBuilder content = new StringBuilder();
Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
content.append(entry.getKey()).append("=").append(entry.getValue());
if (iterator.hasNext()) {
content.append("&");
}
}
Request request = new Request.Builder().url(url + ((content.length() > 0) ? "?" + content.toString() : "")).build();
Response response = null;
try {
response = client.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 发送POST-JSON
* @param url 地址
* @param params 参数
* @return
*/
public static String sendPostJSON(String url,Map<String, String> params){
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, JSONObject.toJSONString(params));
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 发送POST key-value
* @param url
* @param params
* @return
*/
public static String sendPost(String url,Map<String, String> params){
OkHttpClient client = new OkHttpClient();
FormBody.Builder builder = new FormBody.Builder();
Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
String key = entry.getKey();
builder.add(key,entry.getValue());
}
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
Response response = null;
try {
response = client.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}