2011-12-02 15 views
7

wsdlの一部のデータ(PHPのSOAPクライアントを使用)にアクセスしようとすると、次のエラーが発生します。Uncaught SoapFault例外:[クライアント]関数がこのサービスの有効なメソッドではありません

Uncaught SoapFault exception: [Client] Function function_nameis not a valid method for this service 

ヘルプがありますか?

+1

は、実際のエラーということですか?もしそうなら、あなたはサービスプロバイダからテンプレートファイルを取得し、 'function_name'というサービス関数を呼び出そうとしました。これは関数の実際の名前ではありません。あなたは 'function_name'をあなたが呼び出す関数の名前で置き換えることになっています。関数名がどこに行くのかを示すプレースホルダです。サービスプロバイダは、おそらくドキュメントを提供します。私はそれを読むことをお勧めします。正しく。 – DaveRandom

+0

こんにちはDaveさんの返信ありがとうございました。元のエラーメッセージではありません。message.iは実際の関数名を 'function_name'に置き換えました –

+0

まあまあ、エラーは、あなたがそのサービスで有効になっていないことを伝えています。 - ドキュメントをチェックし、関数名が有効であることを確認し、有効な場合はサービスプロバイダに連絡してください。 – DaveRandom

答えて

25

SOAPが見つけることができない機能を実行したい場合、PHPがwsdlファイルをキャッシュする可能性があります。

これを追加します。

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

キャッシュを無効にします。

+0

が私に役立ちます!ありがとう – Talisin

+0

あなたは私の人生で安全です – tingfungc

+0

私はこの行を追加しましたが、それでも同じエラーが発生しました。どうすればいいですか? – Saani

2

2つの解決策:

  1. は、関数が実際にそこにコードのスニペットに存在するかどうかを試してみてください。PHP SoapClient request: not a valid method for this service
  2. また、使用可能な関数呼び出しの一覧を表示した後、場合は、その世話をしますあなたのWSDLはJava SOAPサーバーによって生成されますが、 "service"という名前の複数の関数があるかもしれません。最初のものだけがPHP SOAPクライアントによって認識され、使用されます。あなたは手動でWSDL内のすべての名前を変更する必要があります!
0

関数の先頭にあるコメントにパラメータ、戻り値の型、およびWebサービスのメソッドを追加するだけです。それが動作します。私はその作業を試みた。

/** 
* @param string the symbol of the stock 
* @return float the stock price 
* @soap 
*/ 
public function getPrice($symbol) 
{ 
    //...return stock price for $symbol 
} 
0

私はこの問題があり、最終的に私のPHPエラーログをチェックすることにしました。

php.iniのalways_populate_raw_post_data = -1を有効にし、サーバーを再起動します。

私のPHPのバージョンは、PHP5.6からPHP7にアップグレードするときに、この例外が発生し、当社の状況で5.6.8

関連する問題