さて、私はこれを見るために別の目が必要だと思います。リモートサーバー上のエコー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)#2 {メイン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>";
Webサービスの使用可能な機能を要求するだけで問題は解決しました。
$functions = $client->__getFunctions ();
var_dump ($functions);
EchoTestRequestは有効な関数呼び出しではありませんでした。適切な関数呼び出しはEchoTestでした。これは関数変数ダンプによって示されます。
array(1) { [0]=> string(54) "EchoTestResponse EchoTest(EchoTestRequest $parameters)" }
私はあなたがタイプミスではなく、メソッドが実際に利用できると思います。
これを試して
ini_set("soap.wsdl_cache_enabled", "0");
Wsdlがキャッシュされたことが原因である可能性があります。