服务调用者发送soap消息通过http发送服务器的过程解析


  1.             // axis2通过反射得到一个soap连接工厂的实现类==================================================  
  2.             SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory  
  3.                     .newInstance(); 
  4.    //调用soap连接工厂实现类的creaateConnection()实例化soap连接类的实现类 
  5.             SOAPConnection connection = soapConnFactory.createConnection();  
  6.   
  7.             //  创建消息对象,通过反射实例化了消息工厂抽象类  
  8.             // ===========================================  
  9.             MessageFactory messageFactory = MessageFactory.newInstance(); 
  10.    //消息工厂抽象类通过调用子类(MessageFatoryImpl)实现了createMessage()的调用 
  11.    //【createMessage()方法通过SOAP12Factory.getDefaultEnvelope()实例化了soap信封(soapEnvelope),
  12.    getDefaultEnvelope()方法,OMNamespace ns = new OMNamespaceImpl("http://schemas.xmlsoap.org/soap/envelope/",  "soapenv");通过OMNamespace的实例化给命名空间加上了信封的地址,把soapenv前缀绑定到URI上 SOAPEnvelopeImpl env = new    SOAPEnvelopeImpl(ns, this);("Envelope", ns, factory);把envelope绑定成了Element的元素,
  13.    createSOAPHeader(env);createSOAPBody(env);把header,body绑定到envelope元素下作为envelope元素的子节点   
  14.    然后 soapEnvelope.getOwnerDocument().appendChild(soapEnvelope);把信封添加到文档document中
  15.            创建soap消息实现类,创建soap消息实现类中有对消息的mine类型进行定义,同时创建soappart消息部分,soappart的mine类型必须为xml格式
            SOAPMessageImpl soapMessage = new SOAPMessageImpl(new SOAPEnvelopeImpl(soapEnvelope));
               soapMessage.setSaveRequired();】

  16.            SOAPMessage message = messageFactory.createMessage();  
  17.     
  18. //          message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312");  
  19.       
  20.             // 创建soap消息主体==========================================  
  21.             SOAPPart soapPart = message.getSOAPPart();// 创建soap部分  
  22.             SOAPEnvelope envelope = soapPart.getEnvelope();  
  23.             SOAPBody body = envelope.getBody();  
  24.             //  根据要传给mule的参数,创建消息body内容。具体参数的配置可以参照应用集成接口技术范=====================================  
    1.             SOAPElement bodyElement = body.addChildElement(envelope.createName(  
    2.                     "process""Request""http://esb.service.com/"));  
    3.             bodyElement.addChildElement("ServiceCode").addTextNode("10000061");  
    4.             bodyElement.addChildElement("OrigAppId").addTextNode("999");  
    5.             bodyElement.addChildElement("HomeAppId").addTextNode("998");  
    6.             Calendar c = Calendar.getInstance();  
    7.             String reqTime = String.valueOf(c.getTimeInMillis());  
    8.             bodyElement.addChildElement("ReqTime").addTextNode(reqTime);  
    9.             bodyElement.addChildElement("IpAddress").addTextNode("10.212.40.112");  
    10.             bodyElement.addChildElement("OrigSerialNo").addTextNode("201205242011");  
    11.             //(ServiceCode+ OrigAppId+ ReqTime+ IpAddress)签名  
    12.             String AppSignature = "10000061"+"999"+reqTime+"10.212.40.112"+"123456";  
    13.             bodyElement.addChildElement("AppSignature").addTextNode(EncoderUtil.md5(AppSignature));  
    14.             bodyElement.addChildElement("Version").addTextNode("014");  
    15. //          bodyElement.addChildElement("RelSessionId").addTextNode("RelSessionId");  
    16. //          bodyElement.addChildElement("ReplyCode").addTextNode("ReplyCode");  
    17.             bodyElement.addChildElement("ReplyVersion").addTextNode("05");  
    18.             bodyElement.addChildElement("TimeOut").addTextNode("30");  
    19. //          bodyElement.addChildElement("FtpDir").addTextNode("FtpDir");  
    20. //          bodyElement.addChildElement("FileList").addTextNode("FileList");  
    21.             bodyElement.addChildElement("serviceParas").addTextNode("<param><name>apptest</name><password>apptest</password></param>");  
    22.             // Save the message对消息mine类型再次进行设置
    23.             message.saveChanges();  
    24.             // 打印客户端发出的soap报文,做验证测试  
    25.             System.out.println(" REQUEST: "); 
    26.     //以xml格式的字节流输出outputstream 
    27.             message.writeTo(System.out);  
    28.             System.out.println(" ");  


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值