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
分享到:
相关推荐
SOAP解析,与一般的xml解析不一样,他中间存在报文,解析到就出错了,也就解析不下去,这里举了一个列子,(网络上找了好久都没找到我想要的列子,最后我自己根据例子做了整理做出来的),把数据组合成集合。...
Java提供了DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析器来处理XML。DOM加载整个XML文档到内存,适合小型数据;SAX是事件驱动,只读且不需要全部加载;StAX允许...
对于客户端,可以使用`javax.xml.soap`包中的`SOAPConnectionFactory`、`SOAPConnection`、`SOAPMessage`等类来构造和发送SOAP请求。 3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service ...
3. **发送SOAP请求**:将预先准备好的XML文件读取到内存中,并通过`OutputStream`将其写入HTTP请求中。 4. **接收响应**:使用`InputStreamReader`读取服务器返回的SOAP响应,然后存储到本地文件`result.xml`中。 #...
3. 生成请求:根据业务需求,设置请求参数,利用工具生成实际的SOAP请求XML字符串。 4. 发送请求:将生成的XML字符串通过HTTP客户端发送到目标SOAP服务,获取响应。 5. 处理响应:解析返回的SOAP响应,进行进一步...
SOAP请求是Web服务交互的核心,它允许客户端发送数据到服务端,并接收响应。本工具专为测试SOAP请求及查看其相应结果而设计,对于开发、调试和维护Web服务来说非常实用。 首先,让我们深入了解SOAP请求的构成。一个...
- 发送SOAP请求:Servlet可以使用`java.net.URLConnection`或Apache的 HttpClient库来构造和发送HTTP POST请求,其中请求体包含SOAP消息。 - 处理SOAP响应:接收到响应后,Servlet可以使用XML解析器解析响应体,...
Java发送SOAP报文是Web服务通信中的一个常见任务,它涉及到使用XML格式的数据进行网络通信。SOAP(Simple Object Access Protocol)是一种轻量级的、基于XML的协议,用于在Web上交换结构化和类型化的信息。本文将...
本教程将围绕标题和描述中的关键知识点展开,包括如何拼接SOAP请求,判断SOAP连接成功,获取接口信息,解析SOAP响应报文,并将解析后的数据转换为Java实体。 首先,我们需要理解SOAP的基本结构。一个基本的SOAP消息...
在实际应用中,解析SOAP消息通常结合网络请求,例如使用Apache HttpClient发送SOAP请求并接收响应,然后使用DOM4J解析响应内容。了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP...
要查看由Java代码编写的SOAP请求报文头信息,你需要了解几个关键概念和工具。首先,理解SOAP消息的基本结构至关重要。一个SOAP消息通常包含三个主要部分:头部(Header)、体(Body)以及可选的SOAP-envelop元素。...
例如,在Java中,可以使用`javax.xml.soap`包中的`SOAPConnectionFactory`和`SOAPMessage`类来创建并发送SOAP请求。 3. **接收并解析SOAP响应**:Web服务执行操作后,会返回一个SOAP响应,同样也是XML格式。客户端...
但是,双方都需要支持SOAP服务以便于发送和接收XML文件。 #### 环境配置 为了实现Java下的SOAP服务,需要准备以下工具和库: 1. **νSOAP**(Apache SOAP):实现SOAP服务的核心库。 2. **Xerces**:XML解析器。 ...
7. **部署与使用**:将"javax-xml-soap-1.6.0.jar"添加到项目类路径中,就可以使用其中的API来构建和处理SOAP请求和响应。在Maven或Gradle项目中,可以通过添加对应的依赖来引入这个库。 总的来说,"javax-xml-soap...
### 使用Java实现基于SOAP的XML文档网络传输及远程过程调用 #### 1. SOAP简介与原理 SOAP(Simple Object Access Protocol,简单对象访问协议)是一种基于XML的标准协议,用于在分布式环境中进行消息交换和远程...
6. **调用服务**:通过客户端代理,发送SOAP请求到Web服务,并接收响应。代理类会自动处理网络通信和XML解析,暴露简单的API供开发者使用。 7. **处理响应**:接收到的SOAP响应也是一个XML文档,从中提取所需的数据...
它可以发送自定义的SOAP请求并展示响应,帮助开发者快速验证服务的正确性。 8. **性能优化**:SOAP由于其XML格式,可能比RESTful API效率低。可以通过缓存、压缩和减少XML大小等方式来优化性能。 9. **安全性考虑*...
除了直接处理XML字符串外,还可以使用Java中的SOAP with Attachments API for Java (SAAJ)来更方便地构建和解析SOAP消息。SAAJ提供了一系列接口和类来帮助开发者操作SOAP消息。 #### 七、结论 综上所述,Java结合...