PHP的Soap客户端在构建请求时似乎正在处理类型为s1:char的参数。 Soap API需要'Y'或'N',但在请求XML中我得到'0'。 (传递Bool的结果为'1',但不接受作为API代替'Y')。
我正在使用PHP版本5.3.8与本机Soap客户端
这是我的PHP
$this->soapClient = new SoapClient( $client->wsdl,
array(
'soap_version' => SOAP_1_2,
'trace' => true
)
);
$result = $this->soapClient->SomeSoapMethod(array(
'sSessionKey' => $sessionKey,
// other string and int args that work fine here
'cReturnNonSeats' => 'Y' // API wants 'Y' or 'N'
));
请求XML中的相关XML节点:
<ns1:cReturnNonSeats>0</ns1:cReturnNonSeats>
来自WSDL:
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="cReturnNonSeats" type="s1:char" />
</s:sequence>
</s:complexType>
如果不手动构建XML,有没有办法控制这些参数是如何进行类型转换的呢?
答案 0 :(得分:1)
这就是我如何解决它虽然我现在想为什么SoapClient将该字符串转换为int。
我的参数数组中没有'Y',而是使用了:
new SoapVar('Y', XSD_ANYTYPE)