好吧,我想我需要另外一双眼睛来看看这个。我正在对远程服务器上的echo Web服务进行简单的php soapclient调用。我很确定我没有任何拼写错误,而且函数调用是正确的。但是,我收到一个致命的错误声称该函数不是一个有效的方法。下面是Web服务类型的var_dump。
array(4){[0] => string(88)“struct EspException {string Code; string Audience; string Source; string Message;}”[1] => string(71)“struct ArrayOfEspException {string Source; EspException Exception;}”[2] => string(43)“struct EchoTestRequest {string ValueIn;}”[3] => string(45)“struct EchoTestResponse {string ValueOut;}”}
致命错误:未捕获的SoapFault异常:[客户端]函数(“EchoTestRequest”)在/home/grafixst/public_html/cpaapp/echo_test.php:38中不是此服务的有效方法。堆栈跟踪:#0 / home / grafixst / public_html / cpaapp / echo_test.php(38):SoapClient-> __ call('EchoTestRequest',Array)#1 /home/grafixst/public_html/cpaapp/echo_test.php(38):SoapClientAuth-> EchoTestRequest(Array) #38 {/}引入/home/grafixst/public_html/cpaapp/drew/echo_test.php第38行
以下是我用来拨打电话的代码:
require_once('SoapClientAuth.php');
ini_set("soap.wsdl_cache_enabled", "0");
#- Loading the WSDL document
$server = "https://wsonline.seisint.com/WsAccurint/EchoTest?ver_=1.65";
$wsdl = $server . "&wsdl";
$client = new SoapClientAuth($wsdl,
array(
'login' => $username,
'password' => $password
));
$types = $client->__getTypes();
var_dump($types);
echo "</br>";
$req = $client->EchoTestRequest(array('ValueIn' => 'echo'));
print $req->ValueOut;
echo "</br>";
答案 0 :(得分:49)
对Web服务可用功能的简单请求解决了这个问题。
$functions = $client->__getFunctions ();
var_dump ($functions);
EchoTestRequest不是有效的函数调用。正确的函数调用是EchoTest,函数变量dump。
array(1) { [0]=> string(54) "EchoTestResponse EchoTest(EchoTestRequest $parameters)" }
答案 1 :(得分:20)
我认为你不是拼写错误,而且该方法实际上是可用的。
试试这个
ini_set("soap.wsdl_cache_enabled", "0");
可能是因为wsdl被缓存了。