1

我正在尝试使用此 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。

4

0 回答 0