PHP Soap非WSDL调用:如何传递参数?
我正试图在PHP(5.2.5)中进行这样的非WSDL调用。我肯定我错过了一些简单的东西。此调用有一个参数,一个名为“时区”的字符串: 谢谢你的建议PHP Soap非WSDL调用:如何传递参数?,php,web-services,soap,Php,Web Services,Soap,我正试图在PHP(5.2.5)中进行这样的非WSDL调用。我肯定我错过了一些简单的东西。此调用有一个参数,一个名为“时区”的字符串: 谢谢你的建议 -Dave您可以尝试在参数周围添加另一个array()调用,如下所示: $params = array('timezone'=>'ZULU' ); $return = $client->__soapCall("getTimeZoneTime", array($params), array('soapaction' =>
-Dave您可以尝试在参数周围添加另一个
array()
调用,如下所示:
$params = array('timezone'=>'ZULU' );
$return = $client->__soapCall("getTimeZoneTime",
array($params),
array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);
我无法对此进行测试,但您可以。问题在于参数中缺少名称空间信息。我使用了你例子中的第一个案例,因为它与我提出的最接近 如果更改行:
array(new SoapParam('ZULU', 'timezone')),
致:
它会给你你期望的结果。谢谢。下面是一个现在有效的完整示例:
$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';
$client = new SoapClient(null, array(
'location' => $URL,
'uri' => "http://www.Nanonull.com/TimeService/",
'trace' => 1,
));
$return = $client->__soapCall("getTimeZoneTime",
array(new SoapParam('ZULU', 'ns1:timezone')),
array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);
@戴夫C的解决方案对我不起作用。环顾四周,我想出了另一个解决方案:
$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';
$client = new SoapClient(null, array(
'location' => $URL,
'uri' => "http://www.Nanonull.com/TimeService/",
'trace' => 1,
));
$return = $client->__soapCall("getTimeZoneTime",
array(new SoapParam(new SoapVar('ZULU', XSD_DATETIME), 'timezone')),
array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);
希望这可以帮助某人。尝试过,但它将整个数组作为param0传递。请注意,
uri
是名称空间,SoapClient将调用它ns1
。看到这个答案了吗
$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';
$client = new SoapClient(null, array(
'location' => $URL,
'uri' => "http://www.Nanonull.com/TimeService/",
'trace' => 1,
));
$return = $client->__soapCall("getTimeZoneTime",
array(new SoapParam('ZULU', 'ns1:timezone')),
array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);
$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';
$client = new SoapClient(null, array(
'location' => $URL,
'uri' => "http://www.Nanonull.com/TimeService/",
'trace' => 1,
));
$return = $client->__soapCall("getTimeZoneTime",
array(new SoapParam(new SoapVar('ZULU', XSD_DATETIME), 'timezone')),
array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);