Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Soap非WSDL调用:如何传递参数?_Php_Web Services_Soap - Fatal编程技术网

PHP Soap非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' =>

我正试图在PHP(5.2.5)中进行这样的非WSDL调用。我肯定我错过了一些简单的东西。此调用有一个参数,一个名为“时区”的字符串:

谢谢你的建议

-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')
);