PHP方法输入参数

时间:2011-08-07 14:25:41

标签: php json web-services soap

我不懂PHP,只是基础知识(如果是这样......)。

我的网络服务中有一个方法,如下所示:

$server->register(
    'registerDeviceOnServer', //method name
    array('uniqueIdentifier' => 'xsd:string','deviceName' => 'xsd:string', 'systemVersion' => 'xsd:string', 'deviceModel' => 'xsd:string', 'userLocation_Locality' => 'xsd:string', 'userLocation_CountryCode' => 'xsd:string' ), //input data
    array('xmlReturn' => 'xsd:string'), //output data
    'urn:server.AAAA', //namespace
    'urn:server.AAAA#registerDeviceOnServer', //soapaction
    'rpc', //style
    'encoded', //use
    'regista o iDevice' //info for documentation
);

function registerDeviceOnServer($uniqueIdentifier,$deviceName,$systemVersion,$deviceModel,$userLocation_Locality,$userLocation_CountryCode)
{
    //some code that talks to the database
    //inserting the data into a table
    //
    //the SQL code works fine. I've tested.
}

当我调用Web服务时,数据的顺序并不像php方法中声明的那样。是否必须按顺序进行,或者PHP是否将数据分配给变量?

SOAP请求:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<registerDeviceOnServer xmlns="urn:server.AAAA">
<uniqueIdentifier>VVVVVVVVVVVVWWWWWWWW</uniqueIdentifier>
<userLocation_CountryCode>n/a</userLocation_CountryCode><deviceModel>iPhone Simulator</deviceModel><systemVersion>4.0</systemVersion><deviceName>iPhone OS</deviceName><userLocation_Locality>n/a</userLocation_Locality>
</registerDeviceOnServer>
</soap:Body>
</soap:Envelope>

那么,我该如何解决这个问题?

谢谢,

RL

2 个答案:

答案 0 :(得分:1)

从您的评论中,我现在可以看到您实际上使用的是nusoap.php而不是PHP自己的SoapServer

检查this forum post

  

我最近遇到了类似的问题,因为我没有   为我的SoapServer构造函数提供WSDL URL。

     

显然,soap服务器只能映射消息参数/参数   当它有一个有效的WSDL供参考时(或多或少有意义)   之后对我说。)

这对你有帮助吗?

答案 1 :(得分:0)

正如@akirk所说,也许你的问题与WSDL有关。确保参数与WSDL中的相同顺序