一个java 发送soap请求的例子

本文介绍了一个用于解析和发送SOAP格式XML的Java程序。通过两个类ReceSoap和SendSoap,实现了从XML字符串中提取SOAP消息并将其发送到指定URL的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;  
    }  
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;  
    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值