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

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;

@Override
public 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 block
e.printStackTrace();
}
// 在这里返回xml

this.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());
else
System.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 stub
Document 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 xml


ReceSoap t = new ReceSoap();
t.op = "StrXml";
soapResDoc.accept(t);
soapResDoc = t.doc1; // 得到解析soap中的result xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值