21

さて、これを見渡すにはもう一組の目が必要だと思います。リモートサーバー上のechoWebサービスに対して単純なphpsoapclient呼び出しを行っています。タイプミスはなく、関数呼び出しは正しいと確信しています。ただし、関数が有効なメソッドではないと主張する致命的なエラーが表示されます。以下は、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)#2 {main }行38の/home/grafixst/public_html/cpaapp/drew/echo_test.phpにスローされます

これが私が電話をかけるために使用しているコードです:

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>";
4

2 に答える 2

61

Webサービスの利用可能な機能を要求するだけで、問題は解決しました。

$functions = $client->__getFunctions ();
var_dump ($functions);

EchoTestRequestは有効な関数呼び出しではありませんでした。適切な関数呼び出しはEchoTestでした。これは、関数変数dumpで示されています。

array(1) { [0]=> string(54) "EchoTestResponse EchoTest(EchoTestRequest $parameters)" } 
于 2012-06-13T19:05:27.787 に答える
25

私はあなたがタイプミスではなく、メソッドが実際に利用可能であると仮定します。

これを試して

ini_set("soap.wsdl_cache_enabled", "0");

wsdlがキャッシュされたことが原因である可能性があります。

于 2015-10-05T03:43:15.787 に答える