前面说到发送http请求的方法,这里直接用方法:httprequestfun调取接口
注意里面调用的方法都是上一篇文章封装好的方法
public String httprequestfun(Map<String, String> map) {
HttpData data=new HttpData();
String resulttext=null;
logger.info("接口名称为:"+map.get("httpname"));
logger.info("接口参数为:"+map.get("jsonParam"));
httprequest.setURL(map.get("url"));
httprequest.setHttpHead(map.get("httpheader"));
httprequest.setSessionId(sessionId);//cookie添加
httprequest.setJsonParams(map.get("jsonParam"));
resulttext=gethttpResult(map.get("method"));
cookieKeep(httprequest);//获取到指定接口的cookie,其他接口不再赋值
return resulttext;
}
调第一次获取到cookie,调第二次添加第一次获取到的cookie
获取cookie的方法也是前面写到的,从请求结果中获取
//自动获取cookie
public String getSessionIdFromResult() {
return this.sessionIdfromresult;
}
public void cookieKeep(HttpClientUtil httprequest) {
if(sessionId==null){
this.sessionId=httprequest.getSessionIdFromResult();
logger.info("获取到cookie:"+sessionId);
}
}
这里cookie保持的一个逻辑就是当sessionId有值时不再赋值,所以他只要获取到一个cookie值,后面的接口都用这个值,这就保证了cookie数据一致性。否则会动态获取cookie,后面的接口就拿不到登录后的数据了,做不到保持登录状态。
获取到相应的cookie之后,把这个值放入下一个接口的请求头里面,在上一篇中有提到添加cookie的方法,
//添加cookie
public void setSession(HttpPost httpPost) {
if (sessionId != null && sessionId.length() > 0) {
httpPost.setHeader("Cookie", sessionId);
}
}