SOAP PHP でポートを選択するにはどうすればよいですか? TravelPort を GDS として旅行予約 Web サイトを開発しています。私は彼らの WSDL を調べ始めたばかりで、それらを使用して PHP でサーバーを呼び出そうとしています。私はそれをすることができません。サーバーが機能することはわかっています。リクエストを作成して cURL 経由で送信すると、期待どおりの応答が得られるからです。ただし、独自のサンプル コードを使用して調整することで (機密保持契約に同意し、[サンプル コード] をクリックして、見てください)、私はどこにも行きません。
SOAP PHP モジュールが生成するリクエストを見ると、問題は間違った関数を使用していることだと思います。WSDL 全体を公開することはできないと思いますが、抜粋を次に示します。
<!-- Service -->
<service name="AirService">
<port name="AirRepriceSearchPort"
binding="tns:AirRepriceSearchBinding">
<soap:address
location="http://localhost:8080/kestrel/AirService" />
</port>
<port name="AirScheduleSearchPort"
binding="tns:AirScheduleSearchBinding">
<soap:address
location="http://localhost:8080/kestrel/AirService" />
</port>
<port name="AirLowFareSearchPort"
binding="tns:AirLowFareSearchBinding">
<soap:address
location="http://localhost:8080/kestrel/AirService" />
</port>
どうやら、スクリプトは常に LowFareSearch モジュールではなく AirReprice モジュールに基づいてリクエストを生成します。実際、WSDL を編集して「AirLowFareSearchPort」を最初の要素として配置すると、リクエストは機能します。
私は次のことを試しました:
を使用して実行するアクションを指定します
$client->AirLowFareSearchPort($data)
が、有効な関数ではありません。を使用してすべての機能を取得しました
$client->__getfunctions()
:
:
[0]=>
string(48) "AirRepriceRsp service(AirRepriceReq $parameters)"
[1]=>
string(56) "ScheduleSearchRsp service(ScheduleSearchReq $parameters)"
[2]=>
string(54) "LowFareSearchRsp service(LowFareSearchReq $parameters)"
[3]=>
string(66) "LowFareSearchAsynchRsp service(LowFareSearchAsynchReq $parameters)"
「機能」は「サービス」だけのようです。しかし、括弧内のものをどこに置くかわかりません。
他にアイデアはありません。うまくいけば、あなたが助けることができるでしょう!
アップデート:
問題を明らかにするこの記事を見つけました。ただし、PHP Web サービスと呼ばれる独自のモジュールを指します。SOAPでも同じことをする必要があります。私は本当にあなたの助けが必要..