如何将使用Msxml2.ServerXMLHTTP.3.0的VBScript应用程序升级到C#

本文关键字:应用程序 VBScript ServerXMLHTTP Msxml2 | 更新日期: 2023-09-27 18:24:16

我最近的任务是将一个经典的ASP web应用程序升级到C#。一切都很好,只是有些代码使用了Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")。我真的不知道这是什么,只是我有一个大致的想法,那就是它被用来通过HTTPS调用web服务。

代码如下:

    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与web服务进行通信。如何将此代码升级到C#

如何将使用Msxml2.ServerXMLHTTP.3.0的VBScript应用程序升级到C#

这是向web服务发出SOAP请求。

对您来说,等效的功能是HttpWebRequest,但.NET中的Web服务是一个成熟的功能。我不会麻烦创建XML和处理响应。

如果您使用的是.NET 3.0或更高版本;可以使用Windows Communication Foundation(WCF)添加服务引用。该链接提供了关于如何做到这一点的充分说明。一旦添加了服务引用,就可以使用纯C#调用服务的方法。您所需要做的就是将它指向包含服务WSDL的URL。

如果您使用的是.NET 2.0,那么您可以使用Web引用,它也应该适用于SOAP。

如果只有大约1:1的转换,您可以简单地使用WebRequest实例来获取数据并手动评估它们。这就是旧代码的作用。

一个更详细、推荐和简单的方法是,获取Web服务描述("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