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サービスを適切にサポートしているため、.NETでWebサービスクライアントロジックを.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からも機能します。いいですね。
Pocketsoap 非常にうまく機能します。オブジェクトを生成するには、 WSDLジェネレーター を使用します。これを使用すると、自分で何かを解析する必要はありません。さらに、すべてがニースで強く型付けされています。
MSDN VB 6.0 ResourceCenterのScottSwigartによるこの記事を確認してください。
これまで、PocketSOAPを使用してSalesforceAPIに接続することである程度の成功を収めてきました。 WSDL Wizardは、呼び出し名の最初の23文字を使用してラッパークラスのファイル名を生成するため、使用できませんでした。これにより、重複が発生します。それでも、PocketSOAPは、ウィザードであり、DOMDocumentでXMLHTTPを使用するよりもはるかに簡単です。
また、.NETでラッパーを作成するか、「MS Office {MSOバージョン} Webサービスツールキット」ライブラリの1つを使用することも検討しましたが、これらのオプションにはかなりの展開の手間がかかりました。 PocketSOAPは単純なCOMDLLであり、MS Officeの特定のバージョンに依存せず、MPLでライセンスされています。
SOAPツールキットは間違いなくあなたが得ることができる最高のものです。それなしで同じことをしようとすると、かなりの余分な努力が必要になります。それを行うにはかなり深刻な理由が必要です。
SOAPメッセージの形式は、手動での読み取りまたは書き込みが実際には簡単ではないため、サードパーティのライブラリを強くお勧めします。