保单验真

V5

package com.isoftstone.core.service.impl;

import com.isoftstone.core.service.common.impl.ConnectToV5ByXmlImpl;
import com.isoftstone.core.util.AESTool;
import com.isoftstone.core.util.FileTool;
import com.web.CommRemoteCall;
import java.io.PrintStream;
import java.util.List;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class TestTruePolicyImpl extends ConnectToV5ByXmlImpl
{
  static Logger log = Logger.getLogger(TestTruePolicyImpl.class.getName());
  private static final String KEY = "BDYZ_ZBX";

  public String invoke(String request)
  {
    String decryptStr = "";
    String zbxNeedStr = "";
    String coreRetStr = "";
    try {
      Document docReq = DocumentHelper.parseText(request);
      decryptNodes(docReq.getRootElement());
      decryptStr = docReq.asXML();
      String sendstr = addRouteToXml(decryptStr);
      coreRetStr = CommRemoteCall.RemoteCallIo(sendstr);
      Document docRet = null;
      try {
        docRet = DocumentHelper.parseText(coreRetStr);
      } catch (Exception e) {
        e.printStackTrace();
        zbxNeedStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><respData><errorCode>" +
          AESTool.encrypt("01", "BDYZ_ZBX") + "</errorCode>" +
          "<errorReason>" + AESTool.encrypt(new StringBuilder("核心返回报文如下:").append(coreRetStr).append(",解析时发生异常,异常如下:\t").append(e.getMessage()).toString(), "BDYZ_ZBX") + "</errorReason>" +
          "</respData>";
      }
      if (docRet != null) {
        encryptNodes(docRet.getRootElement());
        zbxNeedStr = docRet.asXML();
      }
    } catch (Exception e) {
      e.printStackTrace();
      zbxNeedStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><respData><errorCode>" +
        AESTool.encrypt("01", "BDYZ_ZBX") + "</errorCode>" +
        "<errorReason>" + AESTool.encrypt(e.getMessage(), "BDYZ_ZBX") + "</errorReason>" +
        "</respData>";
    } finally {
      log.info("【中保信请求v5核心原始报文】:\n" + request);
      log.info("【ESB解密后请求v5核心的真实报文】:\n" + decryptStr);
      log.info("【核心返回的原始报文】:\n" + coreRetStr);
      log.info("【核心返回的原始报文经过ESB加密后,中保信真正需要的报文】:\n" + zbxNeedStr);
    }

    return zbxNeedStr;
  }

  public static void decryptNodes(Element node)
    throws Exception
  {
    System.out.println("--------------------");

    if (node.isTextOnly()) {
      node.setText(AESTool.linuxDecrypt(node.getTextTrim(), "BDYZ_ZBX"));
    }

    List<Element> listElement = node.elements();
    for (Element e : listElement)
      decryptNodes(e);
  }

  public static void encryptNodes(Element node)
    throws Exception
  {
    System.out.println("--------------------");

    if (node.isTextOnly()) {
      node.setText(AESTool.linuxEncrypt(node.getTextTrim(), "BDYZ_ZBX"));
    }

    List<Element> listElement = node.elements();
    for (Element e : listElement)
      encryptNodes(e);
  }

  public static void main(String[] args)
    throws Exception
  {
    String ssss = FileTool.readStringFromFile("d:/c.txt", "gbk");
    Document docReq = DocumentHelper.parseText(ssss);
    encryptNodes(docReq.getRootElement());
    String decryptStr = docReq.asXML();
    System.out.println(decryptStr);
  }
}

V7

package com.isoftstone.core.service.impl;

import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.isoftstone.core.service.intf.ServiceOfStringPara;
import com.isoftstone.core.util.AESTool;
import com.isoftstone.core.util.PatternTool;
import com.isoftstone.core.util.WebserviceTool;

public class V7TestTruePolicyImpl  implements ServiceOfStringPara{

    static Logger log = Logger.getLogger(V7TestTruePolicyImpl.class.getName());
    private  String serviceUrl;//http://pcistest.zsins.com/pcis/services/PolicyValidateTrueService
    private static final String KEY = "BDYZ_ZBX";
    @Override
    public String invoke(String request) {
        String decryptStr = "";
        String zbxNeedStr = "";
        String retStr = "";
        StringBuffer soapRequestData = new StringBuffer();
        try {
            Document docReq = DocumentHelper.parseText(request);
            decryptNodes(docReq.getRootElement());
            decryptStr = docReq.asXML();

            soapRequestData.append("<soapenv:Envelope");
            soapRequestData.append("  xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" ");
            soapRequestData.append("  xmlns:zbx=\"http://zbx.interfaces.webservice.pcis.isoftstone.com/\">");
            soapRequestData.append(" <soapenv:Header/> ");
            soapRequestData.append("<soapenv:Body>");
            soapRequestData.append("<zbx:validate>");
            soapRequestData.append("<arg0>");
            soapRequestData.append("<![CDATA[" + decryptStr + "]]>");
            soapRequestData.append("</arg0>");
            soapRequestData.append("</zbx:validate>");
            soapRequestData.append(" </soapenv:Body>");
            soapRequestData.append("</soapenv:Envelope>");
            retStr = WebserviceTool.send(soapRequestData.toString(), serviceUrl);

            if (retStr != null) {
                zbxNeedStr = PatternTool.parsePattern("<return>([\\s\\S]*)</return>", retStr);
                if("".equals(zbxNeedStr)){
                    zbxNeedStr = retStr;
                }
            }

    } catch (Exception e) {
            e.printStackTrace();
            zbxNeedStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"+
            "<respData>"+
                "<errorCode>"+AESTool.encrypt("01",KEY)+"</errorCode>"+//根据中保信接口文档,接口处理过程中程序发生异常,必须返回01
                "<errorReason>"+AESTool.encrypt(e.getMessage(),KEY)+"</errorReason>"+
            "</respData>";
        } finally {
            log.info("【中保信请求v7核心原始报文】:\n" + request);
            log.info("【ESB解密后请求v7核心的真实报文】:\n" + soapRequestData.toString());
            log.info("【v7核心返回的原始报文】:\n" + retStr);
            log.info("【v7核心返回的原始报文经过ESB加密后,中保信真正需要的报文】:\n" + zbxNeedStr);
        }

        return zbxNeedStr;
    }

    /**
     * 从指定节点开始,递归遍历所有子节点
     *
     * @author chenleixing
     */
    public static void decryptNodes(Element node) throws Exception{

        if(node.isTextOnly()){
            node.setText(AESTool.linuxDecrypt(node.getTextTrim(), KEY));
        }

        // 递归遍历当前节点所有的子节点
        List<Element> listElement = node.elements();// 所有一级子节点的list
        for (Element e : listElement) {// 遍历所有一级子节点
            decryptNodes(e);// 递归
        }
    }

    /**
     * 从指定节点开始,递归遍历所有子节点
     *
     * @author chenleixing
     */
    public static void encryptNodes(Element node) throws Exception{

        if(node.isTextOnly()){
            node.setText(AESTool.linuxEncrypt(node.getTextTrim(), KEY));
        }

        // 递归遍历当前节点所有的子节点
        List<Element> listElement = node.elements();// 所有一级子节点的list
        for (Element e : listElement) {// 遍历所有一级子节点
            encryptNodes(e);// 递归
        }
    }

    public String getServiceUrl() {
        return serviceUrl;
    }

    public void setServiceUrl(String serviceUrl) {
        this.serviceUrl = serviceUrl;
    }

    /*public static void main(String[] args) throws Exception{
//        System.out.println(AESTool.linuxEncrypt("验真", KEY));

        String ssss  =  FileTool.readStringFromFile("d:/c.txt", "gbk");
//        Document docReq = DocumentHelper.parseText(ssss);
//        encryptNodes(docReq.getRootElement());
//        String decryptStr = docReq.asXML();
//        System.out.println(decryptStr);

//        String str = FileTool.readStringFromFile("D:/a.txt", "UTF-8");
        new TestTruePolicyImpl().invoke(ssss);

    }*/

}
时间: 2024-08-29 01:00:28

保单验真的相关文章

保单验真压测

内网压测 2017-06-05 18:51:92开始 [统计数据][2017-06-05 19:30:33:033][random_1.0][第:239998次请求耗时:388毫秒][9.总耗时:83611292毫秒][约等于:83611秒][约等于:1393分]{"respData":{"serialNo":"999999201702180302110001","errorReason":"成功",&qu

搭配【尊享e生】【安联臻爱】,小雨伞住院万元护医疗险推出

小雨伞住院万元护医疗险,便宜不能再便宜的医疗险.   这款是我无意发现的便宜的不能再便宜的医疗险,保险内容还实在,中国人寿(国字头)与第三方小雨伞经纪平台合作推出.一年期1万元医疗险,保费105元,简直不能再谈高性价比,其实是"赠险".   ============== 一.小雨伞介绍 ==============      ============== 二.小雨伞住院万元护医疗险的详细解读 ==============   1.住院保险金(保额1万元,0免赔额).因意外伤害或于等待期

jdom xml解析

import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.xml.sax.InputSource; /** * 解析报文的方法 * @param String messXmlStr 要解析的报文String * @author Mar * */ public Map<String,String> analyzeMessXml(String messXmlStr)

微信营销案例九 服务式营销

案例九:南航 服务式营销 中国南方航空公司总信息师胡臣杰曾表示:“对今天的南航而言,微信的重要程度,等同于15年前南航做网站!” 也正是由于对微信的重视,如今微信已经跟网站.短信.手机App.呼叫中心,一并成为南航五大服务平台. 对于微信的看法,胡臣杰表示“在南航看来,微信承载着沟通的使命,而非营销.” 早在2013年1月30日,南航微信发布第一个版本,就在国内首创推出微信值机服务.随着功能的不断开发完善,机票预订.办理登机牌.航班动态查询.里程查询与兑换.出行指南.城市天气查询.机票验真,等等

淘宝租房来了!哪些行业和职业会“痛哭流涕”?

房价,对几乎所有人来说,都是心中的痛.虽然各种限制政策层出不穷,但房价还是蹭蹭蹭地网上涨,让大众难以承受.因此,对很多漂泊在外务工.上班的人来说,租房几乎成为唯一途径.但相比国外租房系统的完善,国内租房市场还处于一个非常混乱的态势中,负面新闻比比皆是.虽然租房也有很多相关政策,但并没有从根本上解决问题.不过这次阿里巴巴出手了,试图要颠覆租房市场! 据悉,近日杭州住保房管局与阿里巴巴集团.蚂蚁金服集团在杭州市人民政府会议中心,就合作搭建智慧住房租赁监管服务平台举行签约仪式.这意味着,靠信用租房的时

项目做了不少,我比较有感觉的2个项目,分享下

最近,我做了2个比较有意思的项目,都是自己单独完成的,感觉挺有成就感的.我分享下.呵呵. 一个电信运营支撑系统 这个系统的简介: 开发环境 Windows,Eclipse,Java系统的描述:实现了该系统的用户登录信息采集模块,AAA服务器定时采集用户上线与下线信息,并将完整信息发送给中央服务器,不完整信息进行备份,中央服务器对其收到的信息进行入库,不完整信息进行备份.职责和业绩: 这个项目是在上海杰普公司培训的时候做的,没有实现上线. 第二个呢,是一个绿子橄榄油网,呵呵,一个站点来的,也是单独

《“胡”说IC——菜鸟工程师完美进阶》

<"胡"说IC--菜鸟工程师完美进阶> 基本信息 作者: 胡运旺 出版社:电子工业出版社 ISBN:9787121229107 上架时间:2014-5-15 出版日期:2014 年5月 开本:16开 页码:236 版次:1-1 所属分类:计算机 > 软件工程及软件方法学 > 软件方法/软件工程 更多关于>>><"胡"说IC--菜鸟工程师完美进阶>   编辑推荐 -<"胡"说IC--菜鸟工

狠怼酒店的在线短租平台们只“秀外”不“慧中”?

现在,最火的词恐怕非共享经济莫属了,先是共享单车,再是共享充电宝,毋庸置疑,共享经济正在引领21世纪的经济模式潮流.近年来,在线短租可谓风生水起,前有共享经济的光环,后有国务院政策的支持和各大资本的力挺.据易观发布的<2016中国在线短租C2C市场专题分析>报告显示,2016年10月在线短租活跃用户占在线酒店预订活跃用户超过1/5,已经成为旅游住宿的主要形式之一.作为共享经济的一员,在线短租不甘示弱,迎合了年轻用户消费需求的它正在改变人们的出游居住习惯,即民宿取代酒店. 政策.资本与消费升级助

bugzilla使用规范分享

1.new/confirmed测试人员将Bug提交给任务分发人员(研发模块负责人), 此时Bug状态为new/confirmed,开始Bug的生命周期,如果测试人员知道具体负责的研发人员,也可以直接指定,在Assign To项目中输入具体负责的研发人员Email.研发人员接收到Bug,经过分析,不属于自己负责的范围,如果知道谁应该负责,可以在Assigned To项目旁点击edit,直接输入被指定人的Email,将Bug转移给其他研发人员. 2.RESOLVED DUPLICATE 研发人员接收