六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 32|回复: 0

使用java发送和解析soap请求xml

[复制链接]

升级  12%

18

主题

18

主题

18

主题

秀才

Rank: 2

积分
68
 楼主| 发表于 2013-2-3 14:37:19 | 显示全部楼层 |阅读模式
ReceSoap.java:
package com.lmd.servlet;import java.io.InputStream;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.VisitorSupport;import org.dom4j.io.SAXReader;/** * 解析soap格式的xml *  * @author xp9800 */public class ReceSoap extends VisitorSupport {String op = "";Document doc1 = null;@Overridepublic void visit(Element node) {Document doc = null;if (op.equals(node.getName())) {try {doc = DocumentHelper.parseText(node.getText());// str to xml} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 在这里返回xmlthis.doc1 = doc;}}public static void main(String[] args) throws DocumentException {//测试SAXReader reader = new SAXReader();Document doc = reader.read("WebRoot/App/test3.xml");//System.out.println(doc.asXML());ReceSoap t = new ReceSoap();t.op = "StrXml";//System.out.println("doc1:" + t.doc1);doc.accept(t);if(t.doc1 != null)System.out.println("reslut::"+doc.asXML());elseSystem.out.println("reslut:: NULL");//System.out.println("doc1:" + t.doc1.asXML());}public static Document openXmlDocument(InputStream in) {Document resDoc = null;SAXReader reader = new SAXReader();try {return reader.read(in);} catch (DocumentException e) {e.printStackTrace();}return resDoc;}}
SendSoap .java:
package com.lmd.servlet;import java.io.InputStream;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.URL;import java.net.URLConnection;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;/** * 发送soap格式的xml请求 *  * @author xp9800 */public class SendSoap {public Document send(String url1, String SOAPAction, String soap) {// TODO Auto-generated method stubDocument reqDoc = null;try {URL url = new URL(url1);URLConnection conn = url.openConnection();conn.setUseCaches(false);conn.setDoInput(true);conn.setDoOutput(true);// conn.setRequestProperty("Content-Length",// Integer.toString(soap.length()));conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");conn.setRequestProperty("SOAPAction", SOAPAction);OutputStream os = conn.getOutputStream();OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");osw.write(soap);osw.flush();osw.close();InputStream is = conn.getInputStream();reqDoc = openXmlDocument(is);} catch (Exception e) {e.printStackTrace();return reqDoc;}return reqDoc;}/** * 从InputStream中读取Document对象 *  * @param in * @return */public static Document openXmlDocument(InputStream in) {Document resDoc = null;SAXReader reader = new SAXReader();try {return reader.read(in);} catch (DocumentException e) {e.printStackTrace();}return resDoc;}}

使用方法:
SendSoap soap = new SendSoap();String soapAction="http://tempuri.org/scgjGetOutAcceptDealInfo";Document soapResDoc = soap.send(url,soapAction,soapxml);// 得到返回的soap  xmlReceSoap t = new ReceSoap();t.op = "StrXml";soapResDoc.accept(t);soapResDoc = t.doc1; // 得到解析soap中的result xml
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表