6

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でも同じことをする必要があります。私は本当にあなたの助けが必要..

4

1 に答える 1

6

WSDL をロードしたら、 __setLocationを使用して手動でエンドポイントを設定できるはずです。

例:

$client = new SoapClient('http://localhost/supplied_path?wsdl');
$client->__setLocation('http://localhost:8080/kestrel/AirService');

print_r($client->__getfunctions());
于 2015-05-30T00:20:05.660 に答える