2011-06-27 6 views
2

PHPでWebサービスを作成しようとしていて、WSDLを使用しています。ここphp wsdlファイルを取得して2つの関数を送信するときに問題が発生する

は私のWSDLの抜粋

<wsdl:portType name="MyWSDLFilePort"> 
    <wsdl:operation name="funcA"> 
        <documentation>this does something.</documentation> 
     <wsdl:input message="tns:mGetRequest"></wsdl:input> 
     <wsdl:output message="tns:mGetResponse"></wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="funcB"> 
     <wsdl:input message="tns:mGetRequest"></wsdl:input> 
     <wsdl:output message="tns:mGetResponse"></wsdl:output> 
    </wsdl:operation> 
</wsdl:portType> 

私は私のWSDLに2つの別々の機能を持つようにしたい、と私は彼らが異なる事をやりたいです。 私が持っている問題は、funcAとfuncBが同じことをしている、つまり のように見えるということです。クライアントでは、funcAという関数を追加してfuncBを返します。 B "である。 WSDLクライアントでは、funcAまたはBのいずれかを呼び出し、私は "私はfunc A"です。 ここにwsdlを投稿したい場合、私はそうすることができます。

サイドノートと同様に、これはスタックオーバーフローに関する私の最初の投稿です。私の英語はひどく、私の説明はひどいかもしれません。私は事前に謝罪します。

+0

ああ、残念です。タイプミスがありました。私はそれを変えた。 – jonFive

答えて

0

あなたのWSDLを見ると、あなたはthis bugとヒットした可能性があります。 (皮肉なことに、執筆時点でPHPバグサーバーはダウンしていますが、 "php bug 49169"を検索するとGoogleキャッシュからコンテンツを引き出すことができるはずです)。このバグの影響は、同じシグネチャを持つfuncAとfuncBという2つの関数がある場合、PHPは関数シグネチャに基づいて実行時にWSDL内の関数を検索し、最初に出現する関数を使用するということです。したがって、あなたの例では、funcAとfuncBの呼び出しは、最初に定義されているfuncAとして常に処理されることが期待されます。

HTH。

+0

ありがとうございます。それは理にかなっている。これを回避する方法はありますか? – jonFive

+0

WSDLに含まれている操作のいずれに対しても同じシグネチャを持たないように、私はWSDLを操作しました。 RPCスタイル(つまりWSDLなし)を使用できる場合を除き、NuSOAPを使用するか、PHPのWS02を使用します。または、バグを修正することができます;-) – Robin

関連する問題