zoukankan      html  css  js  c++  java
  • 根据第三方提供的wsdl报文(axis2开发),进行的webservice应用的开发实例

    接口应用名称:NgCallService

    入参和出参信息

    入参和出参报文信息

    入参:
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <ROOT>
     <REQUEST_METHOD type="string">getVIPCardVIPGrade</REQUEST_METHOD>
     <REQUEST_INFO>
      <CONTENTID type="string">14</CONTENTID>
      <ID_NO type="string">13*203***66</ID_NO>
     </REQUEST_INFO>
    </ROOT>
    出参:
    <ROOT>
     <RETURN_CODE type="long">0</RETURN_CODE>
     <RETURN_MSG type="string">成功!</RETURN_MSG>
     <DETAIL_MSG type="string">该用户的使用次数查找成功!</DETAIL_MSG>
     <OUT_DATA>
      <USAVLE_NUMBER type="string">0</USAVLE_NUMBER>
      <VIP_NO type="string">0**301******3939</VIP_NO>
      <VIP_GRADE type="string">03</VIP_GRADE>
      <SERVICE_ACC>0</SERVICE_ACC>
     </OUT_DATA>
    </ROOT>
    View Code

    封装入参报文为request对象: NgCallServiceRequest

    package com.sinovatech.service.NgCallService;
    public class NgCallServiceRequest {
        private String requestMethod;// 请求服务方法
        private String contentId;// 服务类型(0:火车站服务 14:机场服务 2:SIM卡免费换卡服务)
        private String idNo;
    . . . . . . . 
    . . . . . . . 这里没有加上getter和setter方法
    }
    View Code

    封装出参报文为response对象: NgCallService

    package com.sinovatech.service.NgCallService;
    public class NgCallServiceResponse {
        private String returnCode;// 执行结果信息编码(0:成功,其他编码标识有错误,具体错误信息参照RETURN_MSG节点内容)
        private String returnMsg;// 执行结果信息内容
        private String detailMsg;// 执行结果详细信息内容
        private String usavleNumber;// 剩余次数
        private String vipNo;// vip用户卡号
        private String vipGrade;// vip用户等级
        private String serviceAcc;// 总次数
    . . . . . . . 
    . . . . . . . 这里没有加上getter和setter方法
    }
    View Code

    对象和报文的转换关系

    package com.si***ch.service;
    
    import org.apache.log4j.Logger;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    
    import com.si***ch.service.NgCallService.NgCallServiceRequest;
    import com.si***ch.service.NgCallService.NgCallServiceResponse;
    import com.si***ch.service.s2299Query.BusiInfo;
    import com.si***ch.service.s2299Query.S2299QueryRequest;
    import com.si***ch.service.s2299Query.S2299QueryResponse;
    import com.si***ch.service.sQUserBase.sQUserBaseRequest;
    import com.si***ch.service.sQUserBase.sQUserBaseResponse;
    
    public class MyParseXML {
        private static final Logger log = Logger.getLogger(MyParseXML.class);
        private static StringBuffer xmlHead =null;
        static{
            xmlHead = new StringBuffer();
            xmlHead.append("<?xml version="1.0" encoding="GBK" standalone="no" ?>").append("
    ");
            xmlHead.append("<ROOT>").append("
    ");
        }
            
        public static String parseNgCallServiceRequest2XML(NgCallServiceRequest request){
            log.info("parseNgCallServiceRequest2XML=================start====================");
            StringBuffer xmlRequest = new StringBuffer();
            xmlRequest.append(xmlHead.toString());
            if(request.getRequestMethod()!=null){
                xmlRequest.append("<REQUEST_METHOD type="string">"+request.getRequestMethod()+"</REQUEST_METHOD>").append("
    ");
            }else{
                xmlRequest.append("<REQUEST_METHOD type="string"></REQUEST_METHOD>").append("
    ");
            }
            xmlRequest.append("<REQUEST_INFO>").append("
    ");
            
            if(request.getContentId()!=null){
                xmlRequest.append("<CONTENTID type="string">"+request.getContentId()+"</CONTENTID>").append("
    ");
            }else{
                xmlRequest.append("<CONTENTID type="string"></CONTENTID>").append("
    ");
            }
            
            if(request.getIdNo()!=null){
                xmlRequest.append("<ID_NO type="string">"+request.getIdNo()+"</ID_NO>").append("
    ");
            }else{
                xmlRequest.append("<ID_NO type="string"></ID_NO>").append("
    ");
            }
            xmlRequest.append("</REQUEST_INFO>").append("
    ").append("</ROOT>").append("
    ");
            log.info("parseNgCallServiceRequest2XML=================end====================");
            return xmlRequest.toString();
        }
        
        /**
         * @throws DocumentException 
         * 
         */
        public static NgCallServiceResponse parseNgCallServiceResponse(String xml) throws DocumentException{
            log.info("parseNgCallServiceResponse=================start====================");
            Document doc = DocumentHelper.parseText(xml);
            NgCallServiceResponse response = new NgCallServiceResponse();
            Element root = doc.getRootElement();
            String returnCode = root.elementText("RETURN_CODE");
            String returnMsg = root.elementText("RETURN_MSG");
            String detailMsg = root.elementText("DETAIL_MSG");
            if(returnCode!=null&&(returnCode.equals("0")||returnCode.equals("0"))){
                Element outData = root.element("OUT_DATA");
                String usavleNumber = outData.elementText("USAVLE_NUMBER");
                String vipNo = outData.elementText("VIP_NO");
                String vipGrade = outData.elementText("VIP_GRADE");
                String serviceAcc = outData.elementText("SERVICE_ACC");
                response.setUsavleNumber(usavleNumber);
                response.setVipNo(vipNo);
                response.setVipGrade(vipGrade);
                response.setServiceAcc(serviceAcc);
            }
            response.setReturnCode(returnCode);
            response.setReturnMsg(returnMsg);
            response.setDetailMsg(detailMsg);
            log.info("parseNgCallServiceResponse=================end====================");
            return response;
        }
        
        public static void main(String[] args) throws DocumentException {
            
            //测试request转为xml
                    
            /*NgCallServiceRequest request = new NgCallServiceRequest();
            request.setRequestMethod("getCustFreeAirNumVIPCardVIPGrade");
            request.setContentId("14");
            request.setIdNo("13120******");
            System.out.println(parseNgCallServiceRequest2XML(request));*/        
                    
            StringBuffer response = new StringBuffer();
            response.append(xmlHead);
            response.append("<RETURN_CODE type="long">0</RETURN_CODE>").append("<RETURN_MSG type="string">成功!</RETURN_MSG>")
            .append("<DETAIL_MSG type="string">该用户的使用次数查找成功!</DETAIL_MSG>")
            .append("<OUT_DATA><USAVLE_NUMBER type="string">0</USAVLE_NUMBER>").append("<VIP_NO type="string">0413013******939</VIP_NO>")
            .append("<VIP_GRADE type="string">03</VIP_GRADE>").append("<SERVICE_ACC type="string">0</SERVICE_ACC>")
            .append("</OUT_DATA></ROOT>");
            NgCallServiceResponse res = parseNgCallServiceResponse(response.toString());
            StringBuffer out = new StringBuffer();
            out.append(res.getReturnCode()+"||"+res.getReturnMsg()+"||"+res.getDetailMsg()+"||"+res.getUsavleNumber()+"||"+res.getVipNo()+"||"+res.getVipGrade()+"||"+res.getServiceAcc());
            System.out.println(out.toString());
        }
    }
    View Code
    根据wsdl的地址生成axis2的客户端
    进入到axis2安装目录的bin目录
    
    cd /app/weblogic/axis2-1.4.1/bin
    
    执行命令生成axis2客户端(linux环境)
    
    ./wsdl2java.sh
    
    -uri http://10.*.*.*:5*00/esbWS/services/ NgCallService?wsdl -o /app/weblogic/ws-java/ NgCallService /
    
    生成的客户端如下:
    
    NgCallServiceCallbackHandler.java  和  NgCallServiceStub.java
    View Code

    在jsp页面中通过iframe调用struts1的action

    <iframe src="${pageContext.request.contextPath}/myservice/NgCallServiceInfo.do" name="iframe" frameborder="0" width="730" height="290" class="">
    </iframe>
    View Code

    Jsp页面中要访问的Struts1中的起始Action方法

    public ActionForward NgCallServiceInfo(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) {
        log.info("NgCallServiceAction  查看查询参数开始..................");
        // 获得登录用户信息,没有登录提示用户需要重新登录
        UserBean user = (UserBean) request.getSession().getAttribute("USER_INFO");
        //这里是做测试,写一个固定的号码:13682672166 
        NgCallServiceResponse ngCallServiceResponse1 = NgCallService("13682672166");
        /*if (user != null) {
            NgCallServiceResponse ngCallServiceResponse = NgCallService(user.getMsisdn());
            if(ngCallServiceResponse!=null){
            request.setAttribute("trainServiceAcc", ngCallServiceResponse.getServiceAcc());
            request.setAttribute("trainUsavleNumber", ngCallServiceResponse.getUsavleNumber());
        }
        }else {
        request.setAttribute("usernologin", "nologin");
        }
        log.info("NgCallServiceAction  查看查询参数结束..................");*/
        if(ngCallServiceResponse1!=null){
        log.info("ngCallServiceResponse1.getDetailMsg()     "+ngCallServiceResponse1.getDetailMsg());
        log.info("ngCallServiceResponse1.getReturnCode()    "+ngCallServiceResponse1.getReturnCode());
        request.setAttribute("msg",ngCallServiceResponse1.getDetailMsg());
    }
        return mapping.findForward("myservice");
    }
    
    
    
    
    
    
    public NgCallServiceResponse NgCallService(String idNo){
            NgCallServiceRequest request=new NgCallServiceRequest();
            request.setRequestMethod("getVIPCardVIPGrade");
            request.setContentId("14");   //0:火车站服务 14:机场服务  2:SIM卡免费换卡服务
            request.setIdNo(idNo);
            NgCallServiceResponse response = NgCallServiceInfo(request);
            //0时表示成功
            if(response != null && response.getReturnCode().equals("0")){
                return response;
            }
            return null;
        }
    
    public  static NgCallServiceResponse NgCallServiceInfo(NgCallServiceRequest request){
            log.info("======查询机场火车站sim卡剩余次数的服务  NgCallServiceInfo start=========");
            String xml="";
            NgCallServiceResponse response = null;
    //下面的语句是读取配置文件中的axis2接口的url
            String requestUrl=GlobalConfig.getProperty("sys.boss","NgCallServiceURL");
            try {
            xml = MyParseXML.parseNgCallServiceRequest2XML(request);
            log.info("查询机场火车站sim卡剩余次数的服务(传入参数):"+xml);
            log.info("requestUrl:"+requestUrl);
            NgCallServiceStub stub = new NgCallServiceStub(requestUrl);
            NgCallServiceStub.CallService call=new NgCallServiceStub.CallService();
            call.setPin(xml);
            
            com.sitech.ws.NgCallServiceStub.CallServiceResponse response2;
            response2 = stub.callService(call);
            xml=response2.get_return();
            log.info("查询机场火车站sim卡剩余次数的服务 接口(输出结果):"+xml);
            response = MyParseXML.parseNgCallServiceResponse(xml);
            } catch (Exception e) {
                log.info(e);
            }
            log.info("======查询机场火车站sim卡剩余次数的服务 接口  NgCallServiceInfo end=========");
            return response;
        }
    View Code

    调用接口输出的报文信息

    <?xml version="1.0" encoding="GBK"?>
    <ROOT>
    <RETURN_CODE type="long">0</RETURN_CODE>
    <RETURN_MSG type="string">成功!</RETURN_MSG>
    <DETAIL_MSG type="string">该用户的机场服务使用次数查找成功!</DETAIL_MSG>
    <OUT_DATA>
        <USAVLE_NUMBER type="string">0</USAVLE_NUMBER>
        <VIP_NO type="string">0*130********688</VIP_NO>
        <VIP_GRADE type="string">02</VIP_GRADE>
    </OUT_DATA>
    </ROOT>
    View Code
  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/wanggd/p/3443185.html
Copyright © 2011-2022 走看看