1

这个被接受(显式声明的身份验证命名空间)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://foo.pro/Auth/">
   <soapenv:Header/>
   <soapenv:Body>
     <auth:login>
      <login>xxx</login>
      <password>xxxx</password>
     </auth:login>
   </soapenv:Body>
</soapenv:Envelope>

这个给出“解组错误:意外元素(uri:” http://foo.pro/Auth/ “,本地:”login“)。预期元素是<{}login>,<{}password>”

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body> <login xmlns="http://foo.pro/Auth/"
                           xmlns:xs="http://www.w3.org/2001/XMLSchema"
                           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <login>login</login>
            <password>password</password>
            </login></soap:Body>
</soap:Envelope>

客户端无法修复,应该在 cxf 服务端做点什么

4

1 回答 1

3

嗯,这很明显。当您定义命名空间时:http://foo.pro/Auth/在您的第二个示例中<login><password>包含的元素<login>属于http://foo.pro/Auth/命名空间。因为你在根<login>标签中声明它xmlns,所以它里面的所有东西都属于这个命名空间:http://foo.pro/Auth/。与您的第一个示例一样,您仅通过指向:命名空间的前缀分配根<login>元素,而其中的其他元素没有分配给它们的任何命名空间,这是您的第二个示例给您错误的方式。authhttp://foo.pro/Auth/

于 2013-06-13T21:07:25.540 回答