当前位置: 首页 > 知识库问答 >
问题:

只配置了SOAP12,但得到错误“传入的SOAP消息协议是版本1.1”

黄昊
2023-03-14
<wsdl:definitions name="ucmdbservice"
    targetNamespace="http://service.my/v3" 
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
    xmlns:tns="http://service.my/v3"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <wsdl:binding name="binding_soap12_v3" type="tns:v3">

        <soap12:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="getResult">
            <soap12:operation
                soapAction="http://service.my/v3/getResult" />
            <wsdl:input>
                <soap12:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap12:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="service_v3">
        <wsdl:port name="port_soap12_v3" binding="tns:binding_soap12_v3">
            <soap12:address location="http://host.my/v3"/>
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>
@javax.jws.WebService(wsdlLocation = "wsdl/myservice_v3.wsdl", 
       endpointInterface = "my.service.V3", 
       targetNamespace = "http://service.my/v3", 
       serviceName = "myservice_v3", 
       portName = "port_soap12_v3")
@javax.xml.ws.BindingType(value = javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
@WebServiceClient(name = "myservice_v3", 
    targetNamespace = "http://service.my/v3", 
    wsdlLocation = "../../wsdl/myservice_v3.wsdl")

注意:服务名称和命名空间是出于保密原因而更改的,所以不要寻找命名空间不匹配:)

共有1个答案

刘辰钊
2023-03-14

这是客户机的一个问题,特别是JAX-WS生成的客户机存根构造函数。

我通过调用3参数构造函数解决了这个问题:

MyServiceV3 service = new MyServiceV3(
  MyService.class.getResource("/wsdl/myservice_v3.wsdl",
  new QName("http://service.my/v3"), "myservice_v3");

而不是基于strage生成的代码的输出的无参数构造函数:

  baseUrl = MyServiceV3 .class.getResource(".");
  url = new URL(baseUrl, "../../wsdl/myservice_v3.wsdl");
 类似资料:
  • 根据下面的代码,如何将协议设置为TLSv1.2、TLSv1、SSLv3? 使用SoapUi,我可以使用以下配置请求服务:-dSOAPUI.https.protocols=TLSv1.2,TLSv1,SSLv3 使用CXF,我得到一个“javax.net.ssl.SSLHandShakeException:没有适当的协议(协议被禁用或密码套件不适当)” 很抱歉我对Soap和SSL的知识很差...

  • 我试图安装Caffe库,但我有一个编译问题,由于一个错误的原型版本安装在我的系统。 我在论坛上遵循了许多提议的方法,我认为在这篇帖子中讨论了最类似的问题。 在caffe.pb.h中控件是: 但是在我的系统标头(/usr/include/google/cript buf/stubs/Common. h)中: 命令protoc--version从终端返回libprotoc 3.2.0。 所以我安装了3

  • 消息协议 节点之间通过消息来进行交互,所有消息都由下面的数据结构来实现。 message Message { enum Type { UNDEFINED = 0; DISC_HELLO = 1; DISC_DISCONNECT = 2; DISC_GET_PEERS = 3; DISC_PEERS = 4;

  • 问题内容: 我正在尝试使用Matplotlib。我以前在这里使用过它,并且运行良好。我正在使用IDLE环境,并且在Matplotlib网站上看到交互模式在IDLE中不起作用,但是在这种情况下应该没关系。另外,该库似乎也可以导入: 问题答案: 更改 至

  • 返回节点旳以太坊协议版本。 调用: web3.eth.getProtocolVersion([callback]) 返回值: 一个Promise对象,其解析值为协议版本字符串。 示例代码: web3.eth.getProtocolVersion().then(console.log); > "63"

  • 我的LogCat: 签名密钥(sw)为https://api.dropbox.com/1/shares/dropbox/a.jpg?oauth_consumer_key=2f2y1dyuqhp58ek 我对http没有太多经验。。 因为httpPost=新的httpPost(sw);工作正常,这是否意味着基本字符串签名正确? 还是我错过了什么?