繁体   English   中英

使用Zend Soap Client通过https在php中调用wsdl

[英]Calling a wsdl in php over https using Zend Soap Client

当我尝试连接到Web服务时,总是会遇到下一个故障

SoapFault异常:[s:Sender]验证消息的安全性时发生错误

我还必须使用安全标头,发送完整的肥皂请求:

<env:Envelope>
<env:Header>
<ns2:Action env:mustUnderstand="1">
http://ws.agiv.be/crabtools/ICRABTools/GetAddressLocation
</ns2:Action>
<ns2:MessageID>urn:uuid:10000001blsd-ghfs</ns2:MessageID>
<ns2:ReplyTo>
<ns2:Address>
http://www.w3.org/2005/08/addressing/anonymous                      
</ns2:Address>
</ns2:ReplyTo>
<ns2:To>https://grab.beta.agiv.be/Tools/CRABTools.svc</ns2:To>
<o:Security env:mustUnderstand="1">
<wsu:Timestamp env:mustUnderstand="1">
<wsu:Created>2010-06-09T13:44:19Z</wsu:Created>
<wsu:Expires>2010-06-09T13:49:19Z</wsu:Expires>
</wsu:Timestamp>
<o:UsernameToken>
<o:Username>myUsername</o:Username>
<o:Password>myPassword</o:Password>
</o:UsernameToken>
</o:Security>
</env:Header>
<env:Body>
<ns1:GetAddressLocation>
<ns1:houseNumberId>2306852</ns1:houseNumberId>
</ns1:GetAddressLocation>
</env:Body>
</env:Envelope>

我的用户名和密码是正确的,我已经准备好以后再更改到期日期,但这并不能解决。

还有什么可能是该故障的原因?

也许我必须在我的php代码中配置更多内容。

我创建了一个覆盖Zend_Soap_Client的类

public function __soapCall($function_name, $arguments, $options=null, $input_headers=null, $output_headers=null) {
        $inputheaders = array($this->wsactionheader(),$this->unencryptedSecurityHeader());
        $result = parent::__soapCall($this->functionname, $arguments, $options, $inputheaders);
        return $result;
    }

如果您告诉我们您要连接到哪种服务器,可能会有所帮助。 另外,请在此处提供请求标头。 使用这样的代码

echo "REQUEST HEADERS:\n" . $client->getLastRequestHeaders() . "\n";
echo "REQUEST:\n" . $client->getLastRequest() . "\n";

您可以做的是:

1)确保已在soap客户端中指定了wsdl。

2)可能是“命名空间”问题。 确保您的SOAP请求使用与服务器相同的“信封”格式(在WSDL中指定),即检查名称空间属性,例如

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:env="http://www.w3.org/2003/05/soap-envelope"

如果名称空间与wsdl中的名称空间不同,请尝试避免在包装在Zend_Soap_Client中的内置PHP SoapClient中明确指定“ soap_version”。 前者总是指定'soap_version',这导致xmlns:env="http://www.w3.org/2003/05/soap-envelope"

3)询问工作请求XML示例和/或完整的HTTP跟踪,然后将它们与您的示例进行比较(比较)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM