`
xp9800
  • 浏览: 36370 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
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
0
1
分享到:
评论
1 楼 yanliyun 2013-12-13  
你好,这各方法参数能跟我说明下吗?

相关推荐

    SOAP xml解析

    SOAP解析,与一般的xml解析不一样,他中间存在报文,解析到就出错了,也就解析不下去,这里举了一个列子,(网络上找了好久都没找到我想要的列子,最后我自己根据例子做了整理做出来的),把数据组合成集合。...

    JAVA调用webservice并解析xml

    Java提供了DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析器来处理XML。DOM加载整个XML文档到内存,适合小型数据;SAX是事件驱动,只读且不需要全部加载;StAX允许...

    java调用soap接口案例

    对于客户端,可以使用`javax.xml.soap`包中的`SOAPConnectionFactory`、`SOAPConnection`、`SOAPMessage`等类来构造和发送SOAP请求。 3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service ...

    Java使用SOAP获取webservice实例解析

    3. **发送SOAP请求**:将预先准备好的XML文件读取到内存中,并通过`OutputStream`将其写入HTTP请求中。 4. **接收响应**:使用`InputStreamReader`读取服务器返回的SOAP响应,然后存储到本地文件`result.xml`中。 #...

    soap-build生成Soap接口请求报文

    3. 生成请求:根据业务需求,设置请求参数,利用工具生成实际的SOAP请求XML字符串。 4. 发送请求:将生成的XML字符串通过HTTP客户端发送到目标SOAP服务,获取响应。 5. 处理响应:解析返回的SOAP响应,进行进一步...

    soap请求的工具

    SOAP请求是Web服务交互的核心,它允许客户端发送数据到服务端,并接收响应。本工具专为测试SOAP请求及查看其相应结果而设计,对于开发、调试和维护Web服务来说非常实用。 首先,让我们深入了解SOAP请求的构成。一个...

    基于Servlet发送、接收SOAP消息的java源程序

    - 发送SOAP请求:Servlet可以使用`java.net.URLConnection`或Apache的 HttpClient库来构造和发送HTTP POST请求,其中请求体包含SOAP消息。 - 处理SOAP响应:接收到响应后,Servlet可以使用XML解析器解析响应体,...

    java发送SOAP报文

    Java发送SOAP报文是Web服务通信中的一个常见任务,它涉及到使用XML格式的数据进行网络通信。SOAP(Simple Object Access Protocol)是一种轻量级的、基于XML的协议,用于在Web上交换结构化和类型化的信息。本文将...

    拼接soap,判断soap是否连接成功,返回接口的信息,解析soap报文,解析后的soap转成实体

    本教程将围绕标题和描述中的关键知识点展开,包括如何拼接SOAP请求,判断SOAP连接成功,获取接口信息,解析SOAP响应报文,并将解析后的数据转换为Java实体。 首先,我们需要理解SOAP的基本结构。一个基本的SOAP消息...

    利用DOM4J解析SOAP的简单示例

    在实际应用中,解析SOAP消息通常结合网络请求,例如使用Apache HttpClient发送SOAP请求并接收响应,然后使用DOM4J解析响应内容。了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP...

    如何查看java代码编写的soap请求报文头信息

    要查看由Java代码编写的SOAP请求报文头信息,你需要了解几个关键概念和工具。首先,理解SOAP消息的基本结构至关重要。一个SOAP消息通常包含三个主要部分:头部(Header)、体(Body)以及可选的SOAP-envelop元素。...

    webservice 调用实例soap协议

    例如,在Java中,可以使用`javax.xml.soap`包中的`SOAPConnectionFactory`和`SOAPMessage`类来创建并发送SOAP请求。 3. **接收并解析SOAP响应**:Web服务执行操作后,会返回一个SOAP响应,同样也是XML格式。客户端...

    用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)

    但是,双方都需要支持SOAP服务以便于发送和接收XML文件。 #### 环境配置 为了实现Java下的SOAP服务,需要准备以下工具和库: 1. **νSOAP**(Apache SOAP):实现SOAP服务的核心库。 2. **Xerces**:XML解析器。 ...

    javax-xml-soap-1.6.0.jar

    7. **部署与使用**:将"javax-xml-soap-1.6.0.jar"添加到项目类路径中,就可以使用其中的API来构建和处理SOAP请求和响应。在Maven或Gradle项目中,可以通过添加对应的依赖来引入这个库。 总的来说,"javax-xml-soap...

    用java实现基于soap的xml文档网络传输及远程过程调用

    ### 使用Java实现基于SOAP的XML文档网络传输及远程过程调用 #### 1. SOAP简介与原理 SOAP(Simple Object Access Protocol,简单对象访问协议)是一种基于XML的标准协议,用于在分布式环境中进行消息交换和远程...

    通过webservice提交xml数据以及soap协议的使用

    6. **调用服务**:通过客户端代理,发送SOAP请求到Web服务,并接收响应。代理类会自动处理网络通信和XML解析,暴露简单的API供开发者使用。 7. **处理响应**:接收到的SOAP响应也是一个XML文档,从中提取所需的数据...

    java+soap+webservice 调用模拟

    它可以发送自定义的SOAP请求并展示响应,帮助开发者快速验证服务的正确性。 8. **性能优化**:SOAP由于其XML格式,可能比RESTful API效率低。可以通过缓存、压缩和减少XML大小等方式来优化性能。 9. **安全性考虑*...

    java 使用soap进行webservers服务(xml)

    除了直接处理XML字符串外,还可以使用Java中的SOAP with Attachments API for Java (SAAJ)来更方便地构建和解析SOAP消息。SAAJ提供了一系列接口和类来帮助开发者操作SOAP消息。 #### 七、结论 综上所述,Java结合...

Global site tag (gtag.js) - Google Analytics