我想创建一个代码来允许现有的经典asp程序使用asp.net web服务。从经典的asp更新不是一种选择,因为我在一家大公司工作,事情就是这样。经典的Asp Web服务问题
我一直浏览大量的教程,据说在这方面有所帮助,但我还没有设法让他们工作。作为初学者,我可能犯了一些明显的错误,但我不知道是什么。
首先,Web服务位于外部服务器上。 “Greeting”方法需要一个String参数,通过它可以确定返回哪个String。输入 “G” 来了procudes此xml:
<?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://server1/Logger_WebService/">Greetings and welcome!</string>
我承担的XPath用于获取内容要么是 “字符串/ *” 或 “*”?
接下来,我的网络服务本身是这样的:
<WebMethod()> _ Public Function Greeting(ByVal stringel As String) As String If stringel.ToLower = "g" Then Return "Greetings and welcome!" Else Return "Bye then!" End If End Function
Web服务工作正常,从一个普通asp.net的解决方案。
现在问题是,经典的asp代码看起来像这样(4种不同的方式,我试图让它工作,SOAP工具包安装在Web服务服务器上,所有示例都是从教程中获取和修改的):
'******* USING GET METHOD Dim wsurl="http://server1/Logger_WebService/service.asmx/Greeting?g" Dim xmlhttp Set xmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "GET",wsurl,false xmlhttp.send Dim rValue 'rValue=xmlhttp.responseXML.selectSingleNode("string") 'use XPATH as input argument ' or you can get response XML rValue=xmlhttp.responseXML Set xmlhttp=nothing '------------------------------------------------------ '******* USING POST METHOD Dim wsurl="http://server1/Logger_WebService/service.asmx/Greeting" Dim xmlhttp Set xmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "POST",wsurl,false xmlhttp.send "stringeli=g" Dim rValue rValue=xmlhttp.responseXML.selectSingleNode("string") ' or you can get response XML ' rValue=xmlhttp.responseXML Set xmlhttp=nothing '------------------------------------------------------ Response.Write consumeWebService() Function consumeWebService() Dim webServiceUrl, httpReq, node, myXmlDoc webServiceUrl = "http://server1/Logger_WebService/service.asmx/Greeting?stringel=g" Set httpReq = Server.CreateObject("MSXML2.ServerXMLHTTP") httpReq.Open "GET", webServiceUrl, False httpReq.Send Set myXmlDoc =Server.CreateObject("MSXML.DOMDocument") myXmlDoc.load(httpReq.responseBody) Set httpReq = Nothing Set node = myXmlDoc.documentElement.selectSingleNode("string/*") consumeWebService = " " & node.text End Function '------------------------------------------------------ Response.Write(Helou()) Public Function Helou() SET objSoapClient = Server.CreateObject("MSSOAP.SoapClient") objSoapClient.ClientProperty("ServerHTTPRequest") = True ' needs to be updated with the url of your Web Service WSDL and is ' followed by the Web Service name Call objSoapClient.mssoapinit("http://server1/Logger_WebService/service.asmx?WSDL", "Service") ' use the SOAP object to call the Web Method Required Helou = objSoapClient.Greeting("g") End Function
我真的不知道为什么没有任何作品,我试过他们每一种方式加载不同的设置等。一个可能的问题是,Web服务位于ASP.Net服务器上需要我输入这个“[ServiceVariableName] .Credentials = System.Net.CredentialCache.DefaultCredentials”。我从公司网络内部执行此操作,并且存在一些安全和授权问题。
我只需要能够发送信息,但不会收到,因为我将要使用的实际方法是将信息插入到数据库中。但就目前而言,让Hello World的东西上班似乎提供了足够的挑战。 :)
Thx的所有帮助。我会尽量检查假期的时间来检查和回复评论,我毫无疑问地遗漏了所需的信息。
请你说话,因为你会对一个白痴,我是新来的这个机会,我可以更好地理解这种方式。 :)
修复程序隐藏在您的答案中:将MSXML2.ServerXMLHTTP更改为MSXML2.XMLHTTP,并且身份验证自动生效。 – user3902302 2016-04-08 14:14:50