足立区在住SEのブログ

足立区在住のSE、中小企業診断士のブログです。機械学習、自然言語処理など。

OutSystemsのSOAP APIを試してみる。

現在、開発中のシステムでSOAPで連携するシステムがあり
SOAP APIも試しています。

REST APIと同じような手順で簡単にAPIコールの処理を実装できます。

Consume SOAP APIを新規作成すると連携先のWSDLのURLを入力を求められる。
f:id:adachinose:20170619101646j:plain

SOAP APIが追加される。
f:id:adachinose:20170619095914j:plain

RequestとResponseのXMLに対応するStructureも作成される。
f:id:adachinose:20170619095933j:plain


アクションは簡単に作れたのですが
コールしてみるとXMLのフォーマットが合わないのか
エラーが出てなかなか動きませんでした。
標準機能だと動きが見えないのでデバッグが難しいです。

ForgeのWebServiceProxyをインストールすると
SOAPの送受信内容を取得できるようだったので入れてみました。
(前提モジュールとしてardoHTTPが必要のようです。)
f:id:adachinose:20170619100038j:plain

APIコールの前後で
実行前にTrace_setCommit
実行後にTrace_Get
を呼び、パラメータを手探りで入れて何度か試すと
RequestとResponseの値を取得できました。
本来、なんの値を入れるのが正しいのかはよくわかっていません。。。


今回呼び出そうとしているAPIでは、Headerにパラメータをセットする必要があり
ExtentionのEnhancedWebReferencesの
SetWebReferenceSoapHeadersを使いました。
f:id:adachinose:20170619100619j:plain

これでHeaderに指定の要素を追加してリクエストを送ることができました。


SOAPJSONに比べて敷居が高いように感じます。
処理がブラックボックスになっていて、上手くいかないときに調べられるポイントが少なく
ドキュメントも少ないので、いろいろやってみたらなんとなく動いたという感じです。
今どき、SOAPには力を入れていないのかもしれません。