【发布时间】:2010-03-22 21:28:40
【问题描述】:
我刚刚使用轴和 Eclipse 创建了一个 Web 服务客户端,但它不适用于我的 Web 服务提供商。 Web 服务客户端创建的消息如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<enviarMensajeRequest
xmlns="http://www.springframework.org/spring-ws/Imk-Zenkiu-Services">
<usuario>someuser</usuario>
<clave>somepassword</clave>
<mensaje>somemessage</mensaje>
<contacto>
<buzonSMS>somenumber</buzonSMS>
<primerNombre>somefirstname</primerNombre>
<primerApellido>somelastname</primerApellido>
</contacto>
</enviarMensajeRequest>
</soapenv:Body>
</soapenv:Envelope>
我认为该消息没有任何问题,但我的提供者坚持该消息应该是:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:imk="http://www.springframework.org/spring-ws/Imk-Zenkiu-Services">
<soapenv:Body>
<imk:enviarMensajeRequest>
<imk:usuario>someuser</imk:usuario>
<imk:clave>somepassword</imk:clave>
<imk:mensaje>somemessage</imk:mensaje>
<imk:contacto>
<imk:buzonSMS>somenumber</imk:buzonSMS>
<imk:primerNombre>somefirstname</imk:primerNombre>
<imk:primerApellido>somelastname</imk:primerApellido>
</imk:contacto>
</imk:enviarMensajeRequest>
</soapenv:Body>
</soapenv:Envelope>
注意命名空间声明从enviarMensajeRequest 移动到soapenv:Envelope 以及参数上的imk: 限定。我在这个过程中尝试了很多组合,但我的 web 服务、wsdl 和 xml 知识非常有限。提供者说他们只能告诉我这个。有任何想法吗?也许我可以使用不同的框架来创建正确的客户端。
【问题讨论】:
-
您的提供者不正确,它们在语义上是相同的。 Axis 知道这一点,并且会做它认为最好的事情。它没有提供简单的方法来改变这一点,因为没有充分的理由。
-
谢谢。除了手动完成整个调用之外,关于如何解决这个问题的任何想法?
-
@skaffman,感谢您的回答,但是有什么办法可以防止轴这样做,如果没有,我会要求服务器提供商更正他们的服务器。
标签: web-services axis