URL wsdlURL = new URL("http://*****/smsservice.asmx?wsdl");
SmsService smsService = new SmsService(wsdlURL);
SmsServiceSoap soapTest=smsService.getSmsServiceSoap();
String xysSmsCookie= "1";
Client client = ClientProxy.getClient(soapTest);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(5000); // 连接超时
httpClientPolicy.setAllowChunking(false); // 取消块编码
httpClientPolicy.setReceiveTimeout(20000); // 响应超时
// keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求)。
// 响应:close(连接已经关闭)。
// keepalive(连接保持着,在等待本次连接的后续请求)。
// Keep-Alive:如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持连接多长时间(秒)。例如:Keep-Alive:300
httpClientPolicy.setConnection(ConnectionType.KEEP_ALIVE);
httpClientPolicy.setCookie(xysSmsCookie);
http.setClient(httpClientPolicy);
Holder<Integer> resultCode= new Holder<>();
Holder<String> errorMsg= new Holder<>();
soapTest.login("test","abc123","V1.0",resultCode,errorMsg);
System.out.println("login 结果:"+resultCode.value+",出错信息:"+errorMsg.value);
TreeMap<String,Object> keyset = (TreeMap)client.getResponseContext().get("org.apache.cxf.message.Message.PROTOCOL_HEADERS");
if(null != keyset && keyset.containsKey("Set-Cookie"))
{
//去掉 [] 获取中间的cookie
xysSmsCookie = keyset.get("Set-Cookie").toString();
if(xysSmsCookie.startsWith("["))
xysSmsCookie = xysSmsCookie.substring(xysSmsCookie.indexOf("[")+1,xysSmsCookie.lastIndexOf("]")-1);
}
// xysSmsCookie = "ASP.NET_SessionId=l4i0el45z1legl45ojjzpvzz; path=/; HttpOnly";
//下一次调用时,带有登录cookie
httpClientPolicy.setCookie(xysSmsCookie);
JAVA CXF webservice接口调用cookie保持
最新推荐文章于 2022-10-18 23:41:41 发布