我想实现 WSDL 服务。为了生成其代码,我使用不同的工具。当我使用SoapUI时,生成文件的方法如下:
*******************************************************
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/">
<soapenv:Header>
<tem:AuthenticationHeader>
<tem:TicketID>?</tem:TicketID>
</tem:AuthenticationHeader>
</soapenv:Header>
<soapenv:Body>
<tem:GetInfo>
<tem:sNo>?</tem:sNo>
<tem:source>?</tem:source>
</tem:GetInfo>
</soapenv:Body>
</soapenv:Envelope>
当我使用https://app.boomerangapi.com/时在 Chrome 上,此方法为:
<x:Envelope
xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/">
<x:Header>
<tem:AuthenticationHeader>
<tem:TicketID>?</tem:TicketID>
</tem:AuthenticationHeader>
</x:Header>
<x:Body>
<tem:GetInfo>
<tem:sNo>?</tem:sNo>
<tem:source>?</tem:source>
</tem:GetInfo>
</x:Body>
</x:Envelope>
为什么命名空间中生成的方法不同?!
该服务的源可能存在什么问题?!
最佳答案
这两个 SOAP 主体完全相同。
一个namespace prefix元素标签中只是命名空间 URI 的符号简写。
XML 文档可以 define a namespace prefix使用以 xmlns:
:
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
该属性意味着“此元素及其以 soapenv:
开头的后代中的所有名称实际上都是与 URI http://schemas.xmlsoap.org/soap/envelope/关联的名称
。”
下面的命名空间定义是完全相同的;它只是指定一个不同的前缀用作同一 URI 的简写:
xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
因此,唯一的区别在于这两个 XML 文档如何引用“http://schemas.xmlsoap.org/soap/envelope/”URI:
- 第一个文档指定以
soapenv:
开头的元素与该 URI 关联。 - 第二个文档指定以
x:
开头的元素与该 URI 关联。
表示法不同,但意思是一样的。它们实际上具有相同的内容。
关于java - 生成 WSDL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67034808/