JAVA CXF webservice接口调用cookie保持

		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);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值