Question

Je dois utiliser un service Web externe à partir de mon programme VB6. Je souhaite pouvoir déployer mon programme sans la boîte à outils SOAP, si possible, mais ce n'est pas une obligation. Je n'ai pas la source de service Web et je ne l'ai pas créée. C'est un service fourni par le fournisseur.

Donc en dehors de la boîte à outils SOAP, quel est le meilleur moyen de consommer un service Web à partir de VB6?

Était-ce utile?

La solution

J'utilise cette fonction pour obtenir des données d'un service 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

Autres conseils

.NET supporte bien les services Web depuis le premier jour. Vous pouvez donc développer la logique de votre client de service Web dans .NET en tant que bibliothèque / assemblage .dll et l'utiliser dans l'application VB6 via COM Interop.

En supposant que vous exécutiez Windows XP Professionnel ou une version ultérieure, une méthode intéressante consiste à utiliser le nom SOAP. Voici un exemple, tiré d'une page MSDN. Je ne sais pas si ce service fonctionne, mais vous avez l’idée ...

   set SoapObj = GetObject
       ("soap:wsdl=http://www.xmethods.net/sd/TemperatureService.wsdl")
   WScript.Echo "Fairbanks Temperature = " & SoapObj.getTemp("99707")

Ce mécanisme fonctionne également à partir de VBScript. Ce qui est bien.

Pocketsoap fonctionne très bien. Pour générer vos objets, utilisez le générateur WSDL . En utilisant cela, vous n’aurez rien à analyser vous-même, plus tout est beau et très typé.

Consultez cet article de Scott Swigart sur le centre de ressources MSDN VB 6.0.

Appel de services Web à partir de Visual Basic 6

Jusqu'à présent, j'ai eu un certain succès en utilisant PocketSOAP pour me connecter à l'API Salesforce. Je ne pouvais pas utiliser l'assistant WSDL car il génère des noms de fichiers de classe wrapper à l'aide des 23 premiers caractères des noms d'appels, ce qui entraîne des doublons. Néanmoins, PocketSOAP fonctionne assez bien pour moi sans l'assistant, et c'est beaucoup plus simple que d'utiliser XMLHTTP avec DOMDocument.

J'ai également envisagé de créer un wrapper dans .NET ou d'utiliser l'un des "MS Office {version MSO} Web Services Toolkit". bibliothèques, mais il y avait beaucoup de problèmes de déploiement avec ces options. PocketSOAP est une simple DLL COM ne dépendant pas d’une version particulière de MS Office et est sous licence MPL.

La boîte à outils SOAP est sans doute la meilleure que vous puissiez obtenir. Essayer de faire la même chose sans cela nécessiterait des efforts supplémentaires considérables. Vous devez avoir des raisons sérieuses de le faire.

Le format des messages SOAP n’est pas facile à lire ni à écrire manuellement et une bibliothèque tierce est vivement recommandée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top