0

我使用wsdl2php.php创建具有基于 wsdl 的类映射的类。它生成了两个类,一个用于创建帐户,一个用于名称值对。

我试图弄清楚如何使用类来创建一个肥皂请求。肥皂服务器是.Net。

这是 CreateAccount.asmx 页面建议的肥皂请求:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CreateAccount xmlns="https://www.mywsdlsitehere.com/Account">
      <parameters>
        <NameValue>
          <name>string</name>
          <value>string</value>
        </NameValue>
        <NameValue>
          <name>string</name>
          <value>string</value>
        </NameValue>
      </parameters>
    </CreateAccount>
  </soap:Body>
</soap:Envelope>

我尝试使用几种方法将名称和值对嵌套到 NameValue 标记中。

这是我最新的失败尝试:

$createaccount->parameters->fullName='Testy Tester';
$createaccount->parameters->userEmail='testy@tester.com';
$createaccount->parameters->accountName='TestyTester';
$createaccount->parameters->password='*****';

class CreateAccount {
  public $parameters; // ArrayOfNameValue
}

class NameValue {
  public $name; // string
  public $value; // string
}

public function CreateAccount(CreateAccount $parameters) {
    return $this->__soapCall('CreateAccount', array($parameters),       array(
            'uri' => 'https://www.mywsdlsitehere.com/Accounting',
            'soapaction' => ''
           )
      );
  }

我得到的错误是:

致命错误:未捕获的 SoapFault 异常:[soap:Server] 服务器无法处理请求。---> 值不能为空。

4

1 回答 1

1

您没有创建服务所需的结构。

该服务需要一个CreateAccount具有属性的顶级对象,该属性parameters是一个数组,其中包含多个NameValue对象实例。

我期待这样的事情:

$create = new CreateAccount();
$create->parameters = array();

$nameValue1 = new NameValue();
$nameValue1->name = "Name1";
$nameValue1->value = "Value1";

$create->parameters[] = $nameValue1;
于 2012-12-17T23:16:43.960 回答