Как использовать веб-сервис из VB6?
-
02-07-2019 - |
Вопрос
Мне нужно использовать внешний веб-сервис из моей программы VB6.Я хочу иметь возможность развернуть свою программу без набора инструментов SOAP, если это возможно, но это не является обязательным требованием.У меня нет источника веб-сервиса, и я его не создавал.Это услуга, предоставляемая поставщиком.
Итак, помимо набора инструментов SOAP, как лучше всего использовать веб-сервис из VB6?
Решение
Я использую эту функцию для получения данных из веб-сервиса.
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 имеет хорошую поддержку веб-служб с самого первого дня, поэтому вы можете разработать клиентскую логику своего веб-сервиса в .NET в виде библиотеки/сборки .dll и использовать ее в приложении VB6 через COM Interop.
Предполагая, что вы работаете в Windows XP Professional или выше, есть один интересный метод — использовать имя 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.
До сих пор я добился определенного успеха в использовании PocketSOAP для подключения к API Salesforce.Я не смог использовать мастер WSDL, поскольку он генерирует имена файлов классов-оболочек, используя первые 23 символа имен вызовов, и это приводит к дублированию.Тем не менее, PocketSOAP для меня работает достаточно хорошо и без мастера, и это гораздо проще, чем использовать XMLHTTP с DOMDocument.
Я также рассматривал возможность создания оболочки в .NET или использования одной из библиотек «MS Office {MSO version} Web Services Toolkit», но с этими вариантами возникли серьезные проблемы с развертыванием.PocketSOAP — это простая COM-DLL, не зависящая от какой-либо конкретной версии MS Office и имеющая лицензию MPL.
Набор инструментов SOAP, пожалуй, лучший из того, что вы можете получить.Попытка сделать то же самое без него потребует значительных дополнительных усилий.Для этого нужно иметь вполне серьезные причины.
Формат сообщений SOAP нелегко читать или писать вручную, поэтому настоятельно рекомендуется использовать стороннюю библиотеку.