質問

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 によるこの記事をご覧ください。

Visual Basic 6 から Web サービスを呼び出す簡単な方法

これまでのところ、PocketSOAP を使用して Salesforce API に接続することである程度の成功を収めてきました。WSDL ウィザードは呼び出し名の最初の 23 文字を使用してラッパー クラス ファイル名を生成するため、WSDL ウィザードを使用できませんでした。これにより重複が発生します。それでも、PocketSOAP はウィザードなしでも十分に機能しており、DOMDocument で XMLHTTP を使用するよりもはるかに簡単です。

.NET でラッパーを作成するか、「MS Office {MSO バージョン} Web サービス ツールキット」ライブラリのいずれかを使用することも検討しましたが、これらのオプションでは展開に大きな問題が発生しました。PocketSOAP は単純な COM DLL であり、MS Office の特定のバージョンに依存せず、MPL に基づいてライセンスされています。

SOAP ツールキットはおそらく、入手できる中で最高のものです。これなしで同じことを行おうとすると、かなりの余分な労力が必要になります。そうするには、かなり深刻な理由が必要です。

SOAP メッセージの形式は手動で読み書きするのがあまり簡単ではないため、サードパーティのライブラリを使用することを強くお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top