我使用wsdl2php.php创建了一个基于wsdl的类映射类。它生成了两个类,一个用于创建帐户,另一个用于名称值对。
我正在试图弄清楚如何使用类来创建一个soap请求。 soap服务器是.Net。
以下是CreateAccount.asmx页面建议的soap请求:
<?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]服务器是 无法处理请求。 ---&GT;值不能为空。
答案 0 :(得分:1)
您没有创建服务所需的结构。
该服务需要顶层的CreateAccount
对象,该对象具有属性parameters
,该属性是一个数组,其中包含多个NameValue
个对象的实例。
我期待这样的事情:
$create = new CreateAccount();
$create->parameters = array();
$nameValue1 = new NameValue();
$nameValue1->name = "Name1";
$nameValue1->value = "Value1";
$create->parameters[] = $nameValue1;