开发者

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))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜