Java 发送SOAP请求调用WebService,解析SOAP报文

本文记录了使用Java进行SOAP请求调用WebService的测试代码,详细说明了调用路径以及如何针对指定的SOAP报文节点进行值的提取。参考来源包括CSDN和cnblogs的相关文章。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/Peng_Hong_fu/article/details/80113196

记录测试代码

SoapUI调用路径

http://localhost:8082/*/webservices/**Service?wsdl

import org.apache.commons.lang.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.xpath.DefaultXPath;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
import java.util.Collections;
import java.util.List;

/**
 * 模拟soapUI调用WebService,解析返回报文
 * Created by PengHongfu 2018-04-26 15:36
 */
public class TestSoap {

    //测试环境地址
    public static String INVOICE_WS_URL = "http://localhost:8082/*/webservices/**Service";

    public static void main(String[] args) throws Exception {

        String sid = "SID值";
        String content = "报文内容,jOSN格式";
        String tranSeq = "UUID";
        String tranReqDate = "2018-04-24";
        StringBuffer stringBuffer = testWebService(sid, content, tranSeq, tranReqDate);

        // 打印HTTP响应数据
        System.out.println(stringBuffer);

        //处理返回数据
        String xmlResult = stringBuffer.toString().replace("<", "<");
        String rtnCode = getXmlMessageByName(xmlResult, "rtnCode");//报文返回状态码,0表示正常,3表示错误
        String message = getXmlMessageByName(xmlResult, "message");//返回信息,主要是状态码不正常时抛出
        String body = getXmlMessageByName(xmlResult, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个带有 `SOAPAction` 报文头的 Java 代码示例,用于调用 SOAP Web 服务: ```java import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPHeader; import javax.xml.ws.BindingProvider; import javax.xml.ws.Service; import javax.xml.ws.soap.SOAPBinding; public class SoapClient { public static void main(String[] args) throws Exception { // 创建 Web 服务的 URL URL url = new URL("http://localhost:8080/myWebService?wsdl"); // 创建服务名称,命名空间为默认的"http://webservice.myapp.com/",服务名称为"myWebService" QName qname = new QName("http://webservice.myapp.com/", "myWebService"); // 创建服务 Service service = Service.create(url, qname); // 获取 Web 服务实现类 MyWebService webService = service.getPort(MyWebService.class); // 设置 SOAPBinding 的 SOAPAction 属性 BindingProvider bp = (BindingProvider) webService; SOAPBinding binding = (SOAPBinding) bp.getBinding(); binding.setSOAPAction("http://webservice.myapp.com/sayHello"); // 添加 SOAPHeader 报文SOAPHeader header = binding.getSOAPHeader(); header.addChildElement(headerName).addTextNode(headerValue); // 调用 Web 服务方法 String result = webService.sayHello("world"); // 输出结果 System.out.println(result); } } ``` 在上面的示例中,我们使用 `javax.xml.ws.BindingProvider` 接口提供的 `getBinding()` 方法获取 `SOAPBinding` 对象,并使用 `setSOAPAction()` 方法设置了 `SOAPAction` 属性。另外,我们还使用 `getSOAPHeader()` 方法获取 `SOAPHeader` 对象,并使用 `addChildElement()` 方法添加了一个报文头。需要注意的是,在添加报文头之前,需要先创建一个 `SOAPHeaderElement` 对象并设置其名称和值。 同样,这里的 `MyWebService` 接口需要根据实际的 Web 服务接口进行修改,并且需要引入对应的 Web 服务 API 包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值