读书人

求解requestEnvelope和requestContext

发布时间: 2012-08-24 10:00:20 作者: rapoo

求解requestEnvelope和requestContext怎么生成

import java.io.BufferedReader;import java.io.FileReader;import java.util.Vector;import javax.mail.internet.MimeBodyPart;import javax.xml.parsers.DocumentBuilder;import org.apache.soap.Constants;import org.apache.soap.SOAPException;import org.apache.soap.messaging.Message;import org.apache.soap.transport.SOAPTransport;import org.apache.soap.util.xml.XMLParserUtils;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.xml.sax.InputSource;public class MimeSoap {@SuppressWarnings("unused")private static final String DEFAULT_HOST_URL = "http://localhost:8082/TalkWebSoap/mimeservlet.do";@SuppressWarnings("unused")private static final String DEFAULT_DATA_FILENAME = "src/hello.txt";@SuppressWarnings("unused")private static final String DEFAULT_DATA_FILENAME1 = "src/PO.xml";private static final String URI = "urn:oreilly-jaws-samples";private String m_hostURL;private String m_attachment;private String m_dataFileName;@SuppressWarnings("unused")private Node tempNode;public MimeSoap(String hostURL, String dataFileName, String dataFileName1) throws Exception {m_hostURL = hostURL;m_attachment = dataFileName;m_dataFileName = dataFileName1;System.out.println();System.out.println("_________________________________________________________");System.out.println("Starting GenericHTTPSoapClient:");System.out.println("    host url        = " + m_hostURL);System.out.println("    attachment      = " + m_attachment);System.out.println("    data file       = " + m_dataFileName);System.out.println("___________________________________________________________");System.out.println();}// 实际的传送工作是由sendSOAPMessage()方法完成的public void sendSOAPMessage() {Message msg = new Message();// 添加附件if (m_attachment != null) {BufferedReader attachmentReader;try {attachmentReader = new BufferedReader(new FileReader(m_attachment));StringBuffer buffer = new StringBuffer();for (String line = attachmentReader.readLine(); line != null; line = attachmentReader.readLine()) {buffer.append(line);}MimeBodyPart attachment = new MimeBodyPart();attachment.setText(buffer.toString());attachment.setHeader("Content-ID", "the-attachment"); msg.addBodyPart(attachment); // 首先读取XML文档,将其解析成DOM树。            FileReader fr = new FileReader (m_dataFileName);         // 通过调用Apache getXMlDocBuilder()方法得到一个解析器,它返回一个DocumentBuilder对象。            DocumentBuilder xdb = XMLParserUtils.getXMLDocBuilder();              // 通过解析器解析文档,得到一个Document对象。            Document doc = xdb.parse (new InputSource (fr));             if (doc == null) {                 throw new SOAPException(Constants.FAULT_CODE_CLIENT, "parsing error");             }             // create a vector for collecting the header elements            Vector<Element> headerElements = new Vector<Element>();              // Create a header element in a namespace            org.w3c.dom.Element headerElement =  doc.createElementNS(URI,"jaws:MessageHeader");              headerElement.setAttributeNS(URI,"SOAP-ENV:mustUnderstand","1");              // Create subnodes within the MessageHeader            org.w3c.dom.Element ele = doc.createElement("From");             org.w3c.dom.Text textNode = doc.createTextNode("Me");             tempNode = ele.appendChild(textNode);tempNode = headerElement.appendChild(ele);            ele = doc.createElement("To");             textNode = doc.createTextNode("You");             tempNode = ele.appendChild(textNode);             tempNode = headerElement.appendChild(ele);              ele = doc.createElement("MessageId");             textNode = doc.createTextNode("9999");             tempNode = ele.appendChild(textNode);             tempNode = headerElement.appendChild(ele);              headerElements.add(headerElement);              // create a vector for collecting the body elements            Vector<Element> bodyElements = new Vector<Element>();             // 获取顶层DOM元素,放到向量中。顶层节点的下层节点元素的创建和添加工作由DOM解析器负责。            bodyElements.add(doc.getDocumentElement ());              // Create the SOAP envelope            org.apache.soap.Envelope envelope = new org.apache.soap.Envelope();              // Add the SOAP header element to the envelope            org.apache.soap.Header header = new org.apache.soap.Header();             header.setHeaderEntries(headerElements);             envelope.setHeader(header);                        // Create the SOAP body element            org.apache.soap.Body body = new org.apache.soap.Body();             body.setBodyEntries(bodyElements);              // Add the SOAP body element to the envelope            envelope.setBody(body);     msg.send (new java.net.URL(m_hostURL), URI, envelope);                System.out.println("Sent SOAP Message with Apache HTTP SOAP Client.");                 // 从传输中接受响应并将其打印到屏幕上                System.out.println("Waiting for response....");                 SOAPTransport st = msg.getSOAPTransport ();                 BufferedReader br = st.receive ();                 String line = br.readLine();                 if(line == null)                 {                     System.out.println("HTTP POST was successful. \n");                 }                 else                 {                    while (line != null)                    {                    System.out.println (line);                         line = br.readLine();                    }                 } } catch (Exception e) {e.printStackTrace();}}}  public static void main(String args[]) {     try {    MimeSoap client = new MimeSoap(DEFAULT_HOST_URL,DEFAULT_DATA_FILENAME,DEFAULT_DATA_FILENAME1);    client.sendSOAPMessage();    } catch (Exception e) {e.printStackTrace();}    } }

?以上为客户端代码加入po.xml 和附件.txt

下面为服务端代码 可是服务端中requestEnvelope和requestContext如何获得了本人求解~!

//处理SOAP体 org.apache.soap.Body body = requestEnvelope.getBody();     java.util.Vector bodyEntries = body.getBodyEntries();         writer.write("\nBody====>\n");     for (java.util.Enumeration e = bodyEntries.elements(); e.hasMoreElements();)     {         org.w3c.dom.Element el = (org.w3c.dom.Element)e.nextElement();         org.apache.soap.util.xml.DOM2Writer.serializeAsXML((org.w3c.dom.Node)el, writer); org.w3c.dom.Element attachmentEl = (org.w3c.dom.Element)el.getElementsByTagName("attachment").item(0);         if (attachmentEl != null)         {             writer.write("\nAttachment==>\n");             cid = attachmentEl.getAttribute("href").substring(4);//get rid of cid:             writer.write("Content-ID = "+cid+"\n");             MimeBodyPart attachment = requestContext.getBodyPart(cid);             try             {                 writer.write("The attachment is...\n"+attachment.getContent()+"\n");             }catch(Exception ex)             {                 throw new SOAPException(Constants.FAULT_CODE_SERVER,                     "Error writing response", ex);             }         }else             writer.write("The Content-ID is null!\n");     } System.out.println(writer.toString()); … … 

?

读书人网 >软件架构设计

热点推荐