java调用WebService服务器未能识别 HTTP 头 SOAPAction

本文探讨了Java在调用WebService时遇到HTTP头SOAPAction未被服务器识别的问题,提供了解决方案。
摘要由CSDN通过智能技术生成

java调用WebService服务器未能识别 HTTP 头 SOAPAction

try {
     
    String endpoint = "http://XXX/OrderSYSWebService.asmx?WSDL";  
    // 直接引用远程的wsdl文件  
    // 以下都是套路  
    Service service = new Service();  
    Call call = (Call) service.
  • 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、付费专栏及课程。

余额充值