SOAP:作为NULL传递的整数
从PHP文件中,我使用WSDL调用我的函数getCustomerByID(它需要一个整数)并传入适当的ID。问题在于,即使将ID编码到函数中,它仍然以NULL的形式传递给服务器。SOAP:作为NULL传递的整数
string 'm:Server' (length=8)
string 'null' (length=4)
null
object(stdClass)[83]
public 'getCustomerByIdFault1_getCustomerByIdFault' => string 'null' (length=4)
null
null
这里是WSDL元素:
<?php
require_once("./include/nusoap/nusoap.php");
$client = new SoapClient('D:\wsdl\CustomerService_CustomerServiceSOAPhttpWithIPAddress.wsdl', array('trace' => 1));
$cId = 100777;
echo " CID:".$cId;
echo "<br>";
try{
$customerID = $client->getCustomerById(100777); //Error is here.
throw new SoapFault('code', 'string', 'actor', 'detail', 'name', 'header');
}
catch (Exception $ex) {
var_dump($ex->faultcode, $ex->faultstring, $ex->faultactor, $ex->detail, $ex->_name, $ex->headerfault);
}
?>
这里是从的try/catch上述吐出
<xsd:element name="getCustomerById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerId" nillable="true" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
任何这里是什么是过得去的服务器捕获,以及服务器的后续回复:
SENT
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CustomerServices/customerService"><SOAP-ENV:Body><ns1:getCustomerById/></SOAP-ENV:Body></SOAP-ENV:Envelope>
您会注意到<ns1:getCustomerById/>
不包含任何值。
答复
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:m="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>m:Server</faultcode><detail><service:getCustomerByIdFault1_getCustomerByIdFault xmlns:service="http://CustomerServices/customerService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></service:getCustomerByIdFault1_getCustomerByIdFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope
>
任何想法/建议,非常感谢!
你不应该这样称呼它:
$client->call('getCustomerById', array('customerId' => 100777))