2

Matlab SOAP リクエスト callSoapService(endpoint,soapAction,message) <--http://www.mathworks.com/help/techdoc/ref/callsoapservice.html の送信に問題があります。

たとえば、http://www.webservicex.net/FedWire.asmx?WSDL でエンドポイント、soapAction、およびメッセージを見つける方法を教えてください。

wsdl には複数の可能性のある soapActions、エンドポイント、およびメッセージがあることは理解していますが、SOAP リクエストの例を探していました。

4

1 に答える 1

2

これは、実行する必要があるプロセスです。

まず、WDSL 定義からクラスを作成します。

url = 'http://www.webservicex.net/FedWire.asmx?WSDL';
className = createClassFromWsdl(url);

これにより、現在のディレクトリに @FedWire というディレクトリが作成されます。このディレクトリに移動するか、以下を使用して FedWire が提供するサービスを調べることができます。

methods(FedWire)

Web サービスを使用する前に、FedWire オブジェクトのインスタンスを作成します。

fw = FedWire;
classType = class(fw) % to confirm the class type.

City と StateCode を必要とする GetParticipantByLocation などのサービスを使用するには、次のようにします。

 [Result, FedWireLists] = GetParticipantsByLocation(fw, 'New York', 'NY')

結果は true である必要があり、FedWireLists は返されたデータを含む深くネストされた構造です。

@FedWire\GetParticipantsByLocation.m を開くと、MATLAB によって生成されたコードが createSoapMessage と callSoapService をどのように使用しているかがわかります。サービスが WSDL クエリをサポートしていない場合は、これらの低レベル関数を使用する必要があります。

createSoapMessage のパラメーターは、次のように入力されます。

  • 名前空間: 'http://www.webservicex.net/'
  • メソッド: 'GetParticipantsByLocation'
  • 値: {'ニューヨーク', 'NY'}
  • 名前: {'City', 'StateCode'}
  • タイプ: {'{http://www.w3.org/2001/XMLSchema}文字列', '{http://www.w3.org/2001/XMLSchema}文字列'}
  • スタイル: 'ドキュメント'

そしてcallSoapService:

  • エンドポイント: 'http://www.webservicex.net/FedWire.asmx'
  • SOAPACTION: 'http://www.webservicex.net/GetParticipantsByLocation'
  • MESSAGE: createSoapMessage 呼び出しの結果。

次のコードは、低レベルの呼び出しで同じクエリを作成します。

% createSoapMessage(NAMESPACE,METHOD,VALUES,NAMES,TYPES,STYLE) creates a SOAP message.
soapMessage = createSoapMessage( ...
  'http://www.webservicex.net/', ...
  'GetParticipantsByLocation', ...
  {'New York', 'NY'}, ...
  {'City', 'StateCode'}, ...
  {'{http://www.w3.org/2001/XMLSchema}string', ...
   '{http://www.w3.org/2001/XMLSchema}string'}, ...
  'document')

% callSoapService(ENDPOINT,SOAPACTION,MESSAGE) sends the MESSAGE,
response = callSoapService( ...
    'http://www.webservicex.net/FedWire.asmx', ...
    'http://www.webservicex.net/GetParticipantsByLocation', ...
    soapMessage);

%parseSoapResponse Convert the response from a SOAP server into MATLAB types.
[result, participants] = parseSoapResponse(response)  

www.webserviceX.NETXML の例から取ったこのようなサービス ドメイン名を大文字にしていたため、これらの例を機能させるのに非常に苦労しました。小文字に変更するとうまくいきました。

使用例は、 http://www.mathworks.co.uk/products/bioinfo/examples.html?file=/products/createClassFromWsdl demos/shipping/bioinfo/connectkeggdemo.htmlの適応です 。

于 2012-08-14T16:05:50.693 に答える