Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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客户端中使用magic函数_Php_Soap_Client_Soap Client - Fatal编程技术网

在PHP-Soap客户端中使用magic函数

在PHP-Soap客户端中使用magic函数,php,soap,client,soap-client,Php,Soap,Client,Soap Client,我将PHP Soap客户端与WSDL文档一起使用。客户端的创建方式如下: $client = new SoapClient('http://eklima.met.no/metdata/MetDataService?WSDL'); 现在我想调用函数'getCountyTypes',它接受参数'language'和'countiesId' $args = array( 'language'=>'no', 'countiesId'=>'2' ); 直接使用函数_soa

我将PHP Soap客户端与WSDL文档一起使用。客户端的创建方式如下:

$client = new SoapClient('http://eklima.met.no/metdata/MetDataService?WSDL');
现在我想调用函数'getCountyTypes',它接受参数'language'和'countiesId'

$args = array(
    'language'=>'no', 
    'countiesId'=>'2'
);
直接使用函数_soapCall可以按预期工作:

$res = $client->__soapCall('getCountyTypes', $args);
尝试使用魔术功能无效:

$res = $client->getCountyTypes($args);
我得到以下错误:

PHP Notice:  Array to string conversion in /Users/jorgen/soaptest.php on line 60
PHP Fatal error:  Uncaught SoapFault exception: [SOAP-ENV:Client] No mapping found for ':countiesId' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'. [java.lang.IllegalArgumentException] in /Users/jorgen/soaptest.php:60
Stack trace:
#0 /Users/jorgen/soaptest.php(60): SoapClient->__call('getCountyTypes', Array)
#1 /Users/jorgen/soaptest.php(60): MySoapClient->getCountyTypes(Array)
#2 {main}
  thrown in /Users/jorgen/soaptest.php on line 60
我需要一些关于如何使用具有神奇功能的soap客户端的说明

编辑:添加了var_dump($client->_getFunctions())的输出

正如所指出的,正确的解决方法是使用

$res = $client->__soapCall('getCountyTypes', $args);
正如所指出的,正确的解决方法是使用

$res = $client->__soapCall('getCountyTypes', $args);

我也有同样的问题。我想我必须做如下的事情:

$args = array(
    'language'=>'no', 
    'countiesId'=>'2' );

$res = $client->getCountyTypes($args);
但实际上我必须做:

$res = $client->getCountyTypes("no","2");

我也有同样的问题。我想我必须做如下的事情:

$args = array(
    'language'=>'no', 
    'countiesId'=>'2' );

$res = $client->getCountyTypes($args);
但实际上我必须做:

$res = $client->getCountyTypes("no","2");

你能做到$client=newsoapclient($wsdl\uurl);var_dump($client->_getFunctions());然后将Vardumped数据粘贴到这里,这样我们就可以看到问题的实质。我将输出添加到问题中。感谢您的关注。您实际期望的是什么?您希望使用magic method\uu调用来执行此操作,因为$res=$client->getCountyTypes($args);任何时候都不起作用,因为正确的做法不同。正确的做法是什么?如何直接在客户机对象上调用函数?根据我找到的各种例子,这似乎是可能的。$res=$client->\uu soapCall('getCountyTypes',$args);它本身就是一种正确的方法uu call函数现在已被弃用。您可以执行$client=new SoapClient($wsdl\u url);var_dump($client->_getFunctions());然后将Vardumped数据粘贴到这里,这样我们就可以看到问题的实质。我将输出添加到问题中。感谢您的关注。您实际期望的是什么?您希望使用magic method\uu调用来执行此操作,因为$res=$client->getCountyTypes($args);任何时候都不起作用,因为正确的做法不同。正确的做法是什么?如何直接在客户机对象上调用函数?根据我找到的各种例子,这似乎是可能的。$res=$client->\uu soapCall('getCountyTypes',$args);调用函数本身就是一种正确的方法,现在不推荐使用