我想創建一個代碼來允許現有的經典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