我正在尝试将数据发布到 .net Web 服务,但收到错误:"SOAP-ERROR:编码:对象没有'ActiveCust' 属性"。
以下是 wsdl:
<s:element name="SubmitNewCustomerToB1">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Context" type="tns:B1Context"/>
<s:element minOccurs="0" maxOccurs="1" name="WebsiteName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Cust" type="tns:Customer"/>
<s:element minOccurs="1" maxOccurs="1" name="ActiveCust" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="CustomerCustomAttrs" type="tns:ArrayOfCustomAttribute"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SubmitNewCustomerToB1Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="SubmitNewCustomerToB1Result" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="B1Context">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="B1DBName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="B1DefaultPriceListNumber" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="B1UKStandardVatCode" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="Customer">
<s:complexContent mixed="false">
<s:extension base="tns:EntityObject">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CardCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="WebPassword" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Surname" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Telephone" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="WebID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="VATNumber" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FaxNumber" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Telephone2" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Organisation" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MobilePhone" type="s:string"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="CustomAttribute">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FieldName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FieldValue" type="s:string"/>
</s:sequence>
</s:complexType>
这是我的代码:
error_reporting(E_ALL);
$Context =array(
"B1DBName" => "Test",
"B1DefaultPriceListNumber" => 1,
"B1UKStandardVatCode" => "O1",
);
$WebsiteName =array(
"WebsiteName"=> "Tes webiste"
);
$Cust =array(
"CardCode" => "",
"WebPassword" => "",
"EmailAddress" => "l@l.com",
"Title" => "Mr",
"FirstName" => "Luca",
"Surname" => "Luchino",
"Telephone" => "02094388",
"WebID" => "1988",
"VATNumber" => "",
"FaxNumber" => "0209998",
"Telephone2" => "",
"Organisation" => "",
"MobilePhone" => ""
);
$ActiveCust =array(
"ActiveCust" => true
);
$CustomerCustomAttrs=array(
$CustomAttribute=array(
"FieldName" => "",
"FieldValue" => ""
)
);
//Associative array
$params = array(
$Context,
$WebsiteName,
$Cust,
$ActiveCust,
$CustomerCustomAttrs
);
//var_dump($params);
try {
$client = new SoapClient("http://my.asmx?wsdl");
$result = $client->SubmitNewCustomerToB1($params);
var_dump($result);
}
catch (Exception $e)
{
echo "Error!<br />";
echo $e -> getMessage ();
}
我得到的错误:SOAP-ERROR:编码:对象没有"ActiveCust"属性
有人可以帮助我吗?非常感谢!卢卡
关联数组的格式正确。问题是最后一个可选数组$CustomerCustomAttrs,我删除了它,Web 服务开始正常工作。
旧版本
//Associative array
$params = array(
$Context,
$WebsiteName,
$Cust,
$ActiveCust,
$CustomerCustomAttrs
);
新版本
$params = array(
'Context' => $Context,
'WebsiteName' => $WebsiteName,
'Cust' => $Cust,
'ActiveCust' => $ActiveCust
);