相对WSDL soap:地址位置

Mih*_*hai 16 wsdl web-services axis2c

我是否可以在WSDL中相对于WSDL位置具有soap:address位置,或者至少相对于服务器?比如我想写:

<soap:address location="https://exampleserver.com/axis2/services/ExampleService" />
Run Code Online (Sandbox Code Playgroud)

如:

<soap:address location="/axis2/services/ExampleService" />
Run Code Online (Sandbox Code Playgroud)

这样可以更快地部署到多个服务器,例如测试服务器.此外,在axis2c的情况下,如果我希望从HTTP或HTTPS使用我的服务,使用我的服务的开发人员的生活变得更加困难,因为他们不能简单地从它的默认位置"?WSDL"导入WSDL.

小智 8

WSDL向客户端描述了与Web服务交互所需的消息格式,类型,参数等.然后,WSDL2C等工具使用来生成交互所需的代码.

但即使您在HTTP或HTTPS上公开您的服务,客户端存根代码也是相同的.您不为每个端点地址重新生成客户端存根.客户端保持不变,这是更改的接入点.

此地址不应在生成的客户端代码中进行硬编码,它必须是客户端应用程序内的可配置URL.

当然,您在WSDL中指定了一个URL,当您在开发服务器中部署Web服务,然后进行暂存和下一次生产时,这会很麻烦.端点在每个环境中都会有所不同(对于HTTP + HTTPS,可能会乘以2),但此时您的开发人员不会受到影响,因为您不会重新生成代码.

在访问Web服务时,您仍然会有不同的地址(对于开发,登台和prod服务器),即使它是相对于某些东西或绝对的.因此,我不知道在WSDL中拥有相对地址是如何有用的,因为您仍然需要将访问点管理到客户端配置中.

  • 在PHP中,访问Web服务的简单方法是在SoapClient构造函数中提供WSDL位置.服务地址取自wsdl.如果wsdl中存在不正确的一个,则服务客户端必须手动指定正确的一个.如果您在http和https上同时使用该服务,则肯定会有一个不正确的服务,除非您动态地从wsdl更改地址. (2认同)