设为首页 加入收藏

TOP

用Java来输出soap报文
2014-11-23 19:20:28 】 浏览:4706
Tags:Java 输出 soap 报文

  前段时间开发ACS,是基于SOAP协议的通信,一次通信过程包含多个soap报文,而且也不想普通的webserivice那样,


  soap报文是自动生成的。ACS的通信的报文是硬编码编出来的,虽然能正确运行,但是实在是不雅,最近闲来无事,


  想着如何用像webservice那样,用Java对象设置参数后,将对象转换成String格式的SOAP报文,这样以后程序的维护


  问题就得到解决了。


  然后在google中baidu了一把,找了个例子,然后开始试验了。其实程序并不难,写这个文章,主要是帮助那些直接使用SOAP


  协议进行开发的朋友们参考,也给自己留个备注,呵呵。


  Java代码


  package com.seahigh.acs.soap;


  import java.util.ArrayList;


  import java.util.List;


  import javax.xml.namespace.QName;


  import javax.xml.parsers.DocumentBuilderFactory;


  import javax.xml.soap.MessageFactory;


  import javax.xml.soap.SOAPBody;


  import javax.xml.soap.SOAPElement;


  import javax.xml.soap.SOAPEnvelope;


  import javax.xml.soap.SOAPException;


  import javax.xml.soap.SOAPFactory;


  import javax.xml.soap.SOAPHeader;


  import javax.xml.soap.SOAPMessage;


  import javax.xml.soap.SOAPPart;


  import javax.xml.transform.OutputKeys;


  import javax.xml.transform.Source;


  import javax.xml.transform.Transformer;


  import javax.xml.transform.TransformerFactory;


  import javax.xml.transform.dom.DOMSource;


  import javax.xml.transform.sax.SAXSource;


  import javax.xml.transform.stream.StreamResult;


  import org.w3c.dom.Document;


  import org.w3c.dom.Node;


  import org.xml.sax.InputSource;


  /**


  *


  * @author 汪心利


  * Date 2010-3-30下午02:51:30


  * (c)CopyRight seahigh 2010


  */


  public class SoapUtil {


  public SOAPPart initSoapPart() throws SOAPException {


  SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();


  SOAPPart soapPart = soapMessage.getSOAPPart();


  SOAPEnvelope soapEnvelope = soapPart.getEnvelope();


  SOAPHeader soapHeader = soapEnvelope.getHeader();


  SOAPElement cwmp = soapEnvelope.addNamespaceDeclaration("cwmp",


  "urn:dslforum-org:cwmp-1-0");


  SOAPElement xsi = soapEnvelope.addNamespaceDeclaration("xsi",


  "http://www.w3.org/2001/XMLSchema-instance");


  SOAPElement xsd = soapEnvelope.addNamespaceDeclaration("xsd",


  "http://www.w3.org/2001/XMLSchema");


  SOAPElement enc = soapEnvelope.addNamespaceDeclaration("SOAP-ENC",


  "http://schemas.xmlsoap.org/soap/encoding/");


  SOAPElement id = soapHeader.addChildElement("ID", "cwmp");


  id.setTextContent("1");


  return soapPart;


  }


  public void soap2String(Source source) throws Exception {


  if (source != null) {


  Node root = null;


  if (source instanceof DOMSource) {


  root = ((DOMSource) source).getNode();


  } else if (source instanceof SAXSource) {


  InputSource inSource = ((SAXSource) source).getInputSource();


  DocumentBuilderFactory dbf = DocumentBuilderFactory


  .newInstance();


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java锁机制Synchronized方法简介 下一篇java中类的拷贝

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目