我不懂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
答案 0 :(得分:1)
从您的评论中,我现在可以看到您实际上使用的是nusoap.php
而不是PHP自己的SoapServer
。
我最近遇到了类似的问题,因为我没有 为我的SoapServer构造函数提供WSDL URL。
显然,soap服务器只能映射消息参数/参数 当它有一个有效的WSDL供参考时(或多或少有意义) 之后对我说。)
这对你有帮助吗?
答案 1 :(得分:0)
正如@akirk所说,也许你的问题与WSDL有关。确保参数与WSDL中的相同顺序