好的另一个PHP SoapClient问题,你猜对它访问.net wsdl。
我正在访问一个soap服务,其中包含min要求为1的元素,因此如果从php SoapClient中省略这些元素,则会抛出一个错误,指出该元素不存在。
如果我提供它们/提供空值/传递空值,则有问题的soap服务会引发错误。有问题的参数是布尔值。
当我通过SoapUI发送请求而没有xml中的参数时,我得到了有效的响应。
还有一位朋友在.net中尝试此操作,该对象的参数的默认值为null。我的朋友告诉我.net中的一个sting有一个默认的空值但布尔值没有?
我对我应该尝试什么感到困惑,目前正在使用弃用的__call方法?
更新
wsdl中的部分如下:
<s:complexType name="BankDetails">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AccountName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="AccountNumber" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="Amex" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="ChequeCard" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="CreditLimit" type="s:decimal"/>
<s:element minOccurs="1" maxOccurs="1" name="CurrentAccount" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="DepositAccount" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Diners" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="DirectDebit" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="JointAccount" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Mastercard" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Months" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="MortgageAccount" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="OtherCard" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="PaymentBookRequired" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Storecard" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Visa" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Years" type="s:int"/>
</s:sequence>
</s:complexType>
我在Soap UI中发送的成功请求是:
<BankDetails>
<CurrentAccount>true</CurrentAccount>
<Months>0</Months>
<Years>3</Years>
</BankDetails>
答案 0 :(得分:1)
假设您正在传递XML,请尝试删除空的整个元素。例如,如果因为你把它弄空了就打破了,只需删除整行。大多数WSDL不喜欢接收空行。他们或者宁愿在里面有东西,或者根本没有那条线。
或者尝试传递一个假布尔值。