2012-09-10 12 views
5

SOAP PHPでポートを選択するにはどうすればいいですか?私はTravelPortをGDSとして旅行予約ウェブサイトを開発しています。 私はWSDLを見始めました。私はそれらを使用してPHPでサーバーを呼び出そうとしています。私はそれをすることができません。私はサーバが動作していることを知っています。なぜなら、リクエストを作成してcURLを介して送信すると、私は期待しているレスポンスを得ますが、自分自身を使用して適合させることになります(sample code) )、 俺はどこにもいかねえ。PHP WSDLでポート名を指定する方法

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> 

はどうやらスクリプトは常にAirRepriceモジュールの代わりに、LowFareSearchモジュールに基づいて要求を生成しますが。実際、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)" 
    

    しかし、私はどこに得ることはありません:

括弧内のものを入れます。

私は他のアイデアはありません。うまくいけばあなたは助けることができるでしょう!

UPDATE:

私はそれが問題を公開this articleを見つけました。しかし、PHP Webサービスと呼ばれる独自のモジュールを指しています。私はSOAPで同じことをする必要があります。私は本当にあなたの助けが必要です。

答えて

3

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

例:

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

print_r($client->__getfunctions()); 
関連する問題