SoapClient でプロバイダー wsdl を使用していますが、コマンド __getFunctions を使用すると、次のような結果が得られます。
method1Rsp service(method1Req $parameters)
method2Rsp service(method2Req $parameters)
method3Rsp service(method3Req $parameters)
method4Rsp service(method4Req $parameters)
method5Rsp service(method5Req $parameters)
したがって、関数「service()」を呼び出すか使用することしかできません__soapCall('service',$info)
が、常に「method1」スキーマを取得します。私が使用する場合__doRequest()
、必要なメソッドを自己書き込みxmlで送信でき、正常に動作しますが、残念です... $info配列でメソッド名を送信すると、最初のメソッドも使用されます。
質問__soapCall()
:またはサービス関数を使用して特定のメソッドを呼び出す方法はありますか、それとも wsdl を変更する必要がありますか?
編集:
で使用される xml リクエストを次に示します__doRequest
。
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<LowFareSearchReq TargetBranch="" xmlns="http://www.travelport.com/schema/air_v20_0" xmlns:com="http://www.travelport.com/schema/common_v17_0">
<com:BillingPointOfSaleInfo OriginApplication="UAPI"/>
<SearchAirLeg>
<SearchOrigin>
<CityOrAirport Code="LON" xmlns="http://www.travelport.com/schema/common_v17_0" />
</SearchOrigin>
<SearchDestination>
<CityOrAirport Code="MUC" xmlns="http://www.travelport.com/schema/common_v17_0" />
</SearchDestination>
<SearchDepTime PreferredTime="2013-02-10" />
<AirLegModifiers>
<PreferredCabins>
<CabinClass Type="Economy" />
</PreferredCabins>
</AirLegModifiers>
</SearchAirLeg>
<SearchPassenger Code="ADT" Age="30" xmlns="http://www.travelport.com/schema/common_v17_0"/>
<AirPricingModifiers CurrencyType="EUR">
</AirPricingModifiers>
</LowFareSearchReq>
</s:Body>
</s:Envelope>
Web サービスの場所は、http://webservicename/AirService
使用する必要がある方法に関係なくあります。これは問題なく動作しますが、応答も xml 文字列です。さらに、将来の更新で wsdl ファイルを変更しても、スキーマは更新されません。Using__soapCall
は stdClass オブジェクトを返し、スキーマを自動的に取得します。