Web services 经典asp中的Web服务

Web services 经典asp中的Web服务,web-services,asp-classic,Web Services,Asp Classic,首先,这是我在这里提出的关于web服务的第三个问题,我非常感谢guyz帮助我解决了这个问题,但仍然缺少了一些不正确的东西 这是我从一个问题中得到的代码 Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP") oXmlHTTP.Open "POST", "http://www.oursite.com/WebServices/ourService.asmx?WSDL", False oXmlHTTP.setRequestHeader "Conte

首先,这是我在这里提出的关于web服务的第三个问题,我非常感谢guyz帮助我解决了这个问题,但仍然缺少了一些不正确的东西 这是我从一个问题中得到的代码

    Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP")
oXmlHTTP.Open "POST", "http://www.oursite.com/WebServices/ourService.asmx?WSDL", False 

oXmlHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "SOAPAction", "http://ourNameSpace/ourFunction"

SOAPRequest = _
  "<?xml version=""1.0"" encoding=""utf-8""?>" &_
  "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" &_
    "<soap12:Body>" &_
      "<ourFunction xmlns=""http://ourNameSpace/"">" &_
        "<var1>" & Session("userid") & "</var1>" &_
        "<var2>" & Session("internetid") & "</var2>" &_
      "</ourFunction>" &_
    "</soap12:Body>" &_
  "</soap12:Envelope>"

oXmlHTTP.send SOAPRequest
当我调用提供所有细节和所有必要内容的web服务时,仍然无法从这个过程中获得任何类型的输入,这是令人沮丧的。 我的意思是,我什么也得不到,我得到的是空洞的响应,而若我使用旧的方法,那个么我被建议不要实现那个种方法,那个就是使用soap客户端

Set oSOAP = Server.CreateObject("MSSOAP.SoapClient30")
oSOAP.ClientProperty("ServerHTTPRequest") = True
现在,这样我至少可以得到一个会话id,但同样,即使使用此过程,我也无法继续, 所以伙计,我被困在这个问题上了

我需要调用函数并得到xml作为回报,但我没有得到任何回报

我调用服务的方式使它不响应,但如果是这样的话,它就会给出错误,就像我在代码中犯了错误一样

因此,请在这方面帮助我 我将非常感谢你帮我这个忙。 谢谢不要使用“?WSDL”。这只是为了检索WSDL

此外,即使在VBSCRIPT中,也不要通过字符串连接构建XML。始终使用XMLAPI来创建XML


我认识到许多人仍然使用经典的ASP,他们几乎没有选择。(*)尽管如此,您还是应该欢迎任何机会,不要编写更多需要别人维护(甚至可能是您)的VBSCRIPT。相反,编写一小段C#代码将web服务作为COM对象公开。您可以使用普通的“添加服务引用”技术,但VBSCRIPT会将其视为普通COM对象。我会看看能不能找到一个例子



(*)也许如果我们开始称它为“蹩脚、臭、ASP”,管理层会更快地摆脱它?但也许不是,然后我们就会被这个名字所困扰。

正如桑德斯先生所指出的,不要使用“?WSDL”,而是替换它

“”


最终我同意John的观点,放弃使用VBScript,使用C#dll来完成这项工作,并公开一个COM接口以在ASP中使用

然而,有些事情你可能会研究。首先,不要使用Microsoft.XMLHTTP,因为它不是线程安全的。改用
CreateObject(“MSXML2.ServerXMLHTTP”)

要诊断出哪里出了问题,请使用。使用SOAP时,启动fiddler,然后发出

ProxyCfg -u
在命令行上。您将在fiddler中看到服务器之间的确切对话。如果您有另一个SOAP接口正常工作的示例,那么可以使用fiddler从中检查HTTP会话

现在切换到您的新代码并检查该代码生成的请求。您应该能够根据这些数据确定需要对标题和XML进行哪些更改才能使事情正常进行

记得发一封信

Proxycfg -d

在关闭fiddler之前。

+1调用另一个库来执行web服务调用。嘿,guyz,我没有我提供的asmx文件url。如果我删除?wsdl,它甚至不会运行
Proxycfg -d