我在PHP中遇到SOAP Header问题
我的代码应该生成类似这样的内容
<soapenv:Header>
<ns1:RequestHeader xmlns:ns1="xxxxxxx">
<ns1:auth xmlns:ns1="yyyy">
<ns1:user>xxx</ns1:user>
<ns1:pass>false</ns1:pass>
</ns1:auth>
</ns1:RequestHeader>
</soapenv:Header>
这个问题,我无法弄清楚如何正确地做到这一点,我发现了很多技巧,但是大多数技巧都会迫使我改变发送主XML的方式或改变我的整个代码。< / p>
我当前的代码打印以下内容
<soapenv:Header>
<ns1:RequestHeader>
<ns1:auth>
<ns1:user>xxx</ns1:user>
<ns1:pass>false</ns1:pass>
</ns1:auth>
</ns1:RequestHeader>
</soapenv:Header>
我的代码是
$Auth = new stdClass();
$Auth->auth->user = "user";
$Auth->auth->pass = "pass";
$header = new SoapHeader(true,'RequestHeader',$Auth,false);
$client->__setSoapHeaders($header);
您如何看待这一点,如何将属性更正地添加到RequestHeader
?
谢谢
答案 0 :(得分:0)
我找到了解决方案,
$header_part = '
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" SOAP-ENV:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>'."USERNAME".'</wsse:Username>
<wsse:Password>'."PASSWORD".'</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
';
$soap_var_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
$soap_header = new SoapHeader( 'http://your-target-service.com', 'wsse', $soap_var_header );
$soap_client->__setSoapHeaders($soap_header);
您需要使用原始肥皂请求发送此内容。