Как обновить приложение VBScript, которое использует Msxml2.ServerXMLHTTP.3.0 до C #? - PullRequest
4 голосов
/ 14 февраля 2012

Недавно мне было поручено обновить классическое веб-приложение ASP до C #.Все было хорошо, за исключением того, что есть некоторый код, который использует Server.CreateObject("Msxml2.ServerXMLHTTP.3.0").Я действительно даже не знаю, что это такое, за исключением того, что у меня есть общее представление о том, что он используется для вызова веб-службы через HTTPS.

Код выглядит так:

    Dim strSOAPEnvelope

    strSOAPEnvelope = "<?xml version='1.0' encoding='utf-8'?>" & _
                        "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _
                            "<soap:Body>..........</soap:Body>" & _
                        "</soap:Envelope>"                  

  oXMLHttp.Open "POST", "https://example.com/service.asmx", False
  oXMLHttp.setRequestHeader "Content-Type", "text/xml"
  oXMLHttp.setOption 2, 13056
  oXMLHttp.setRequestHeader "Connection", "close"
  oXMLHttp.setRequestHeader "SOAPAction", "https://example.com" & strfunction

Мне кажется, я понимаю общее представление о том, что это общение с веб-сервисом через HTTPS.Как мне обновить этот код до C #

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Это запрос SOAP к веб-службе.

Эквивалентная функция для вас - HttpWebRequest, но веб-службы в .NET - это полноценная функция.Я бы не стал создавать XML и обрабатывать ответ.

Если вы используете .NET 3.0 или выше;Вы можете использовать Windows Communication Foundation (WCF), чтобы добавить ссылку на службу .Ссылка содержит подробные инструкции о том, как это сделать.Добавив ссылку на службу, вы можете вызывать методы службы, используя простой C #.Все, что вам нужно сделать, это указать URL-адрес, содержащий WSDL для службы.

Если вы используете .NET 2.0, вы можете использовать Web References , который должен работать для SOAP какхорошо.

2 голосов
/ 14 февраля 2012

Если конверсия составляет всего 1: 1, вы можете просто использовать экземпляр WebRequest для извлечения данных и их оценки вручную. Вот что делает старый код.

Более сложным, рекомендуемым и простым способом было бы получить описание веб-сервиса (файл 'wsdl'), импортировать его и использовать прокси-классы, которые VS автоматически создал для вас из wsdl.

VS: Проект -> AddWebreference - введите URL службы (https://example.com/service.asmx)

Если все идет хорошо, это так же просто, как добавить ссылку на управляемую сборку для вашего проекта. VS даже отслеживает обновления сервиса.

Обзор по теме: http://msdn.microsoft.com/en-us/library/bb907578.aspx

И если вы используете VS: http://msdn.microsoft.com/en-us/library/tydxdyw9.aspx

...