使用步骤
1最好能了解这玩意的基本原理,不了解也没关系粘贴过去就行了,实在不行创建个demo,连上网按照顺序复制粘贴过去跑起来就行了
顺序 单元测试@Test(controller)->service层->impl层->okhttp工具类(直接丢实现类里面也行,爱咋写咋写)
废话不多说,上图,代码在最后
完整代码部分–分好类文件,直接粘贴过去用就行了,当postman用,我试过的没问题
***## 单元测试类***其实就是controller
@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
@Test
void getShuiWuToken() throws Exception {
//有token 就放这里
String token="null";
//接口地址
String address="http://xxxx.xxxx.xxxx:8088/api/login/token";
//请求参数的集合
Map<String,Object> reqBody= new HashMap<>();
//请求参数的内容--入参
reqBody.put("账号","123456");
//请求头集合
Map<String,Object> reqHeader = new HashMap<>();
//调用接口类里面方法
JSONObject a = okhttpService.okhttpPost( token, address, reqBody, reqHeader);
System.out.println("aaaaa---"+a);
}
}
# 接口类
public interface OkhttpService {
JSONObject okhttpPost(String token, String address, Map<String,Object> reqBody, Map<String,Object> reqHeader) throws Exception;
}
##实现类
@Service
public class OkhttpServiceImpl implements OkhttpService {
@Override
public JSONObject okhttpPost(String token, String address, Map<String,Object> reqBody, Map<String,Object> reqHeader) throws Exception {
JSONObject resJsObData = HttpCllientUtils.toPost( token, address, reqBody, reqHeader);
return resJsObData;
}
}
## 工具类(重点)
public class HttpCllientUtils {
public static JSONObject toPost (String token,String address,Map<String,Object> reqBody,Map<String,Object> reqHeader) throws Exception{
OkHttpClient mOkHttpClient = new OkHttpClient();
ObjectMapper OM = new ObjectMapper();
Map<String, Object> body = new HashMap<>();
//遍历请求参数map集合 放到请求体body中
for(Object keyObj : reqBody.keySet() ){
String key = (String) keyObj;
body.put(key,reqBody.get(key));
}
//设置参数接收方式
MediaType JSON = MediaType.parse("application/json;charset=utf-8");
//创建请求体
RequestBody requestBody = RequestBody.create(JSON, OM.writeValueAsString(body));
Headers seteaders = null;
okhttp3.Headers.Builder headersbuilder = new okhttp3.Headers.Builder();
//遍历请求参数map集合 放到请求体body中
for(Object keyObj : reqHeader.keySet() ){
String key = (String) keyObj;
headersbuilder.add(key,reqHeader.get(key).toString());
}
seteaders = headersbuilder.build();
Request request = new Request.Builder()
.post(requestBody)
.url(address)
.headers(seteaders)
.build();
JSONObject resultJso=null;
try (Response response = mOkHttpClient.newCall(request).execute()) {
String Str = response.body().string();
System.out.println("1111-----"+Str);
resultJso = JSONObject.fromObject(Str);
System.out.println("2222---------:"+resultJso);
} catch (Exception e) {
e.printStackTrace();
}
return resultJso;
}
}
好了就这么多,连上网就能用