SOAP客户端请求 - >错误请求
问题描述:
我被要求查看使用SOAP服务同步数据。我根本不了解SOAP,所以我得到一个错误的请求错误。SOAP客户端请求 - >错误请求
我想调用的函数是一个测试回波功能:
公共字符串EchoAuthenticated(字符串文本)
每次我把它叫做我得到一个错误。
我已经注释掉了用户名/密码设置,因为我现在不知道用户名和密码,我的联系人正在休假:(现在虽然我很高兴只是为了获得验证失败的消息而不是错误...
如果任何人都可以点我朝着正确的方向,请...
感谢,
约翰
<?php
$apiUrl = 'https://exdev.api.propctrl.co.za/v3/Integration.svc?wsdl';
$options = array('trace' => 1, 'exceptions' => 1, 'soap_version' => SOAP_1_2);
try
{
$client = new SoapClient($apiUrl, $options);
//$data = array(
// 'Username' => "test",
// 'Password' => "test"
//);
//$header = new SoapHeader('https://exdev.api.propctrl.co.za/v3/', 'CredentialsHeader', $data, false);
//$client->__setSoapHeaders($header);
var_dump($client->__getFunctions());
print $client->EchoAuthenticated("Test String");
var_dump($client->__getLastRequest());
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
答
您可以尝试类似:
...
$client = new SoapClient($apiUrl, $options);
var_dump($client->__getFunctions());
$auth = array("Username" => "John", "Password" => "secret",
"IsP24Credentials" => false);
$header = new SoapHeader("https://www.propctrl.com/", "CredentialsHeader",
$auth, FALSE);
$client->__setSoapHeaders($header);
print $client->EchoAuthenticated(array(
"text" => "My text to be echoed."
));
var_dump($client->__getLastRequest());
...
这将导致这样的恳求SOAP请求:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="https://www.propctrl.com/v3" xmlns:ns2="https://www.propctrl.com/">
<env:Header>
<ns2:CredentialsHeader>
<ns2:IsP24Credentials>false</ns2:IsP24Credentials>
<ns2:Password>secret</ns2:Password>
<ns2:Username>John</ns2:Username>
</ns2:CredentialsHeader>
</env:Header>
<env:Body>
<ns1:EchoAuthenticated>
<ns1:text>My text to be echoed.</ns1:text>
</ns1:EchoAuthenticated>
</env:Body>
</env:Envelope>
作为一个侧面说明,你可以看看http://www.soapui.org/。这个工具在Web服务开发方面有很大帮助。
嘿马塞勒斯,谢谢你的回复。我没有得到那个工作,但是我要下载soapui,看看发送了什么...... – 2013-03-27 20:23:09