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允许...
3. 生成请求:根据业务需求,设置请求参数,利用工具生成实际的SOAP请求XML字符串。 4. 发送请求:将生成的XML字符串通过HTTP客户端发送到目标SOAP服务,获取响应。 5. 处理响应:解析返回的SOAP响应,进行进一步...
对于客户端,可以使用`javax.xml.soap`包中的`SOAPConnectionFactory`、`SOAPConnection`、`SOAPMessage`等类来构造和发送SOAP请求。 3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service ...
- 发送SOAP请求:Servlet可以使用`java.net.URLConnection`或Apache的 HttpClient库来构造和发送HTTP POST请求,其中请求体包含SOAP消息。 - 处理SOAP响应:接收到响应后,Servlet可以使用XML解析器解析响应体,...
在这个过程中,Java 程序需要使用到 SOAP 协议来发送请求和接收响应,实现对 Webservice 的调用。 首先,需要了解 Webservice 的基本概念。Webservice 是一种基于网络的软件系统,可以提供各种服务,如天气预报、...
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格式。客户端...
6. **调用服务**:通过客户端代理,发送SOAP请求到Web服务,并接收响应。代理类会自动处理网络通信和XML解析,暴露简单的API供开发者使用。 7. **处理响应**:接收到的SOAP响应也是一个XML文档,从中提取所需的数据...
它可以发送自定义的SOAP请求并展示响应,帮助开发者快速验证服务的正确性。 8. **性能优化**:SOAP由于其XML格式,可能比RESTful API效率低。可以通过缓存、压缩和减少XML大小等方式来优化性能。 9. **安全性考虑*...
在Java中实现SOAP请求,通常会使用JAX-WS(Java API for XML Web Services)框架。以下是一个简单的SOAP请求示例: ```java import javax.jws.WebService; import javax.xml.ws.BindingProvider; import javax.xml....
7. **部署与使用**:将"javax-xml-soap-1.6.0.jar"添加到项目类路径中,就可以使用其中的API来构建和处理SOAP请求和响应。在Maven或Gradle项目中,可以通过添加对应的依赖来引入这个库。 总的来说,"javax-xml-soap...
在提供的压缩包中,"SOAP实例程序,实现Java发送SOAP信息"可能是源代码文件,其中包含了一个完整的Java应用示例,演示了如何发送SOAP请求并处理响应。"1"可能是额外的文件或资源,如配置文件、依赖库或测试数据。...
这里需要使用`@POST`注解指定SOAP请求的URL,并使用`@Body`注解传递SOAP请求的XML内容。 ```java public interface SoapService { @POST("your-soap-endpoint") Call<SoapResponse> soapRequest(@Body Soap...
// 创建SOAP请求XML String soapRequest = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\...
3. 发送请求:使用HttpTransportSE对象发送SOAP请求到服务器。这个过程包括设置HTTP头、序列化SOAP请求并发送。 4. 处理响应:接收到SOAP响应后,需要反序列化以获取结果。这通常涉及解析SOAP响应的XML结构。 四、...
开发者可能会使用dom.jar来处理这些XML文档,验证WSDL,解析SOAP响应,或者构建新的SOAP请求。 在实际应用中,除了标准的Java DOM API,还有许多第三方库提供了更高级的功能和性能优化,比如Apache的Xerces和...