我正在尝试使用此WSDL将引导插入到SOAP Web服务中:http://www.agemni.com/AgemniWebservices/service1.asmx?WSDL
此处记录了API:http://wiki.agemni.com/4Integration_And_API%27s/APIs/Database_API
此Web服务的后端代码似乎是在.NET中。
这是我的代码:
// Create soap client.
try {
$this->client = new SoapClient("https://www.agemni.com/AgemniWebservices/service1.asmx?WSDL", array('soap_version' => SOAP_1_2, 'cache_wsdl' => 0, "trace" => true));
} catch (Exception $e) {
$this->logMessage('Couldn\'t connect to web service.');
throw $e;
}
// Create parameters.
$dataParams = new \stdClass;
$dataParams->strUsername = 'userman';
$dataParams->strPassword = 'hissecretpassword';
$dataParams->strCompanyName = 'validcompanyname';
$leadCode = 2;
$dataParams->objecttype = $leadCode;
// Create keys.
$dataParams->keys = new \stdClass;
$dataParams->keys->Phone = 'Phone';
// Create values.
$dataParams->values = new \stdClass;
$dataParams->values->Phone = '8011234567';
// Call web service.
$validateResult = $this->client->CreateEntity($dataParams);
以下是我收到的回复:
object(stdClass)#27 (1) {
["ValidateEntityResult"]=>
object(SoapVar)#29 (4) {
["enc_type"]=>
int(0)
["enc_value"]=>
object(stdClass)#28 (10) {
["statusCode"]=>
string(9) "Succeeded"
["status"]=>
string(5) "Error"
["description"]=>
string(56) "Phone number is required and needs to be 10 digits long."
["errorNumber"]=>
int(1)
["xmlResult"]=>
string(39) "<?xml version="1.0" standalone="yes" ?>"
["EntityValidated"]=>
bool(false)
["EntityCreated"]=>
bool(false)
["EntityUpdated"]=>
bool(false)
["EntityIDCreated"]=>
int(0)
["isloggedIn"]=>
bool(false)
}
["enc_stype"]=>
string(15) "ExceptionReport"
["enc_ns"]=>
string(44) "http://tempuri.org/AgemniWebService/Service1"
}
}
我在PHPFreaks上发现了一个类似的问题,这个问题已有数年之久,但从未成功应对。我在PHP SoapClient中看到了嵌套参数的其他类似问题,但我看到的所有建议都以相同的错误消息结束。
收到的身份验证与公司名称一样正常。但是,我几乎以我能想到的方式刺激了键和值参数的格式化,解析和编码。我已经玩过将我的参数声明为SoapVar和SoapParam以及我能想到的每个可能的构造函数参数,并且仍然收到了相同的错误消息。
如果有人认为Agemni网络服务不接受我的主管电话号码,我会非常感谢任何建议。
感谢。
更新 我可以在字符串中生成我需要的XML请求并使用cURL发送它,但我想使用SoapClient。但是,我很难在键和值节点中生成元素,如下所示:
<anyType xsi:type="xsd:string">phone</anyType>'
我遵循了一些关于在SoapClient中创建自定义复杂类型的指南,但我无法创建看起来像这样的XML。