0
我正在嘗試使用php進行非wsdl SOAP客戶端調用。我的代碼是這樣的:在非wsdl soap客戶端中使用php設置xml rquest頭php
try {
$URL = 'http://example.com/webservices/security/accesscontrol.asmx';
$sc = new SoapClient(null, array(
'location' => $URL,
'uri' => 'http://example.com/webservices/security/',
'trace' => 1
));
$usertoken = array('UserNameToken' =>
array(
'UserName' => 'test',
'Password' => 'test123'
));
$header = new SoapHeader('http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'Security', $usertoken);
$sc->__setSoapHeaders($header);
$test = $sc->__soapCall("AuthenticateClient",
array(),
array('soapaction' => 'http://example.com/webservices/security/AuthenticateClient')
);
如果我調試,看看最後的請求頭XML的一部分,它看起來像這樣:
<SOAP-ENV:Header>
<ns2:Security>
<item><key>UserNameToken</key><value><item><key>UserName</key><value>test</value></item><item><key>Password</key><value>test123</value></item></value></item>
</ns2:Security>
</SOAP-ENV:Header>
但是,如果使用WSDL文件,XML頭的樣子這個:
<SOAP-ENV:Header>
<ns2:Security>
<ns2:UserNameToken>
<ns2:UserName>test</ns2:UserName>
<ns2:Password>test123</ns2:Password>
</ns2:UserNameToken>
</ns2:Security>
</SOAP-ENV:Header>
如何使用非wsdl SOAP客戶端調用來使頭部像上面那樣?因爲它不起作用,並給出由「如果用戶名令牌或用戶名未在AuthenticateClient肥皂標題請求中提供」而導致的錯誤
在此先感謝您的幫助。
請注意,我已故意更改了URL和密碼,因爲我無法透露它們。
感謝丹尼爾。它工作完美。 –