VB6 から Web サービスを利用するにはどうすればよいですか?
-
02-07-2019 - |
質問
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 ジェネレーター. 。これを使用すると、自分で何かを解析する必要がなく、さらにすべてが素晴らしく、強力に型指定されます。
MSDN VB 6.0 リソース センターにある Scott Swigart によるこの記事をご覧ください。
これまでのところ、PocketSOAP を使用して Salesforce API に接続することである程度の成功を収めてきました。WSDL ウィザードは呼び出し名の最初の 23 文字を使用してラッパー クラス ファイル名を生成するため、WSDL ウィザードを使用できませんでした。これにより重複が発生します。それでも、PocketSOAP はウィザードなしでも十分に機能しており、DOMDocument で XMLHTTP を使用するよりもはるかに簡単です。
.NET でラッパーを作成するか、「MS Office {MSO バージョン} Web サービス ツールキット」ライブラリのいずれかを使用することも検討しましたが、これらのオプションでは展開に大きな問題が発生しました。PocketSOAP は単純な COM DLL であり、MS Office の特定のバージョンに依存せず、MPL に基づいてライセンスされています。
SOAP ツールキットはおそらく、入手できる中で最高のものです。これなしで同じことを行おうとすると、かなりの余分な労力が必要になります。そうするには、かなり深刻な理由が必要です。
SOAP メッセージの形式は手動で読み書きするのがあまり簡単ではないため、サードパーティのライブラリを使用することを強くお勧めします。