VB6 プログラムから外部 Web サービスを使用する必要があります。可能であれば、SOAP ツールキットなしでプログラムを展開できるようにしたいのですが、それは必須ではありません。Web サービスのソースがなく、作成もしていません。ベンダー提供のサービスです。
では、SOAP ツールキット以外で、VB6 から Web サービスを利用する最良の方法は何でしょうか?
VB6 プログラムから外部 Web サービスを使用する必要があります。可能であれば、SOAP ツールキットなしでプログラムを展開できるようにしたいのですが、それは必須ではありません。Web サービスのソースがなく、作成もしていません。ベンダー提供のサービスです。
では、SOAP ツールキット以外で、VB6 から Web サービスを利用する最良の方法は何でしょうか?
この関数を使用して、Web サービスからデータを取得します。
Private Function HttpGetRequest(url As String) As DOMDocument
Dim req As XMLHTTP60
Set req = New XMLHTTP60
req.Open "GET", url, False
req.send ""
Dim resp As DOMDocument
If req.responseText <> vbNullString Then
Set resp = New DOMDocument60
resp.loadXML req.responseText
Else
Set resp = req.responseXML
End If
Set HttpGetRequest = resp
End Function
.NET は初日から Web サービスを適切にサポートしているため、Web サービス クライアント ロジックを .NET で .dll ライブラリ/アセンブリとして開発し、COM 相互運用機能を介して VB6 アプリで使用できます。
Windows XP Professional 以降で実行していると仮定すると、興味深い方法の 1 つは、SOAP モニカを使用することです。いくつかの MSDN ページから取り上げた例を次に示します。この特定のサービスが機能するかどうかはわかりませんが、アイデアはわかります...
set SoapObj = GetObject
("soap:wsdl=http://www.xmethods.net/sd/TemperatureService.wsdl")
WScript.Echo "Fairbanks Temperature = " & SoapObj.getTemp("99707")
このメカニズムは、VBScript からも機能します。いいですね。
ポケットソープはとてもよく効きます。オブジェクトを生成するには、WSDL ジェネレーターを使用します。これを使用すると、自分で何も解析する必要がありません。さらに、すべてが素晴らしく、強く型付けされています。
これまでのところ、PocketSOAP を使用して Salesforce API に接続することである程度の成功を収めています。WSDL ウィザードは、呼び出し名の最初の 23 文字を使用してラッパー クラスのファイル名を生成し、結果として重複するため、使用できませんでした。それでも、PocketSOAP は、ウィザードがなくても十分に機能しており、DOMDocument で XMLHTTP を使用するよりもはるかに簡単です。
また、.NET でラッパーを作成するか、「MS Office {MSO バージョン} Web サービス ツールキット」ライブラリの 1 つを使用することも検討しましたが、これらのオプションにはかなりの展開上の問題がありました。PocketSOAP は単純な COM DLL であり、MS Office の特定のバージョンに依存せず、MPL の下でライセンスされています。
MSDN VB 6.0 リソース センターの Scott Swigart によるこの記事を参照してください。
SOAP ツールキットは間違いなく入手できる最高のものです。それなしで同じことをしようとすると、かなりの追加の労力が必要になります。それを行うには、かなり深刻な理由が必要です。
SOAP メッセージの形式は、手動で読み書きするのは簡単ではないため、サードパーティのライブラリを使用することを強くお勧めします。