SOAP: Integer being passed as NULL
From a PHP file, I'm using a WSDL to call my function, getCustomerByID (which expects an integer) and pass in the appropriate ID. Problem is, even when hard coding the ID into the function, it still gets passed to the server as a NULL.
<?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);
}
?>
Here is what is spit out from the try/catch above:
string 'm:Server' (length=8)
string 'null' (length=4)
null
object(stdClass)[83]
public 'getCustomerByIdFault1_getCustomerByIdFault' => string 'null' (length=4)
null
null
Here is the WSDL element:
<xsd:element name="getCustomerById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerId" nillable="true" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Any here is what is getting captured by the server, and the subsequent reply from the server:
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>
You'll notice that <ns1:getCustomerById/>
doesn't contain any values.
REPLY
<?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
>
Any thoughts/开发者_如何学Cadvice is greatly appreciated!
Shouldn't you call it like:
$client->call('getCustomerById', array('customerId' => 100777))
精彩评论