Я пытаюсь создать код, позволяющий существующей классической программе asp использовать веб-сервис asp.net. Обновление с классического asp не вариант, так как я работаю в большой компании и все так, как есть.
Я просматривал множество учебных пособий, предположительно, помогающих в этом, но мне пока не удалось заставить их работать. Как новичок, я мог совершить некоторые очевидные ошибки, но я просто не знаю, что.
Во-первых, веб-сервис расположен на внешнем сервере. Метод "Приветствие" нуждается в параметре String, с помощью которого он определяет, какая строка отправляется обратно. Ввод "g" для этого прокулирует этот xml:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://server1/Logger_WebService/">Greetings and welcome!</string>
Я предполагаю, что xpath для получения содержимого является либо "string / *", либо "*"?
Далее мой веб-сервис выглядит так:
<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
Веб-сервис работает нормально из обычного решения asp.net.
Теперь вот проблема, классический asp-код выглядит следующим образом (4 различных способа, которыми я пытался заставить это работать, набор инструментов SOAP установлен на сервере веб-службы, все примеры взяты и изменены из учебных пособий):
'******* 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
Я серьезно не знаю, почему ничего не работает, я пробовал их в разные стороны с множеством разных настроек и т. Д. Одна из возможных проблем заключается в том, что веб-сервис расположен на сервере, который в ASP.Net требовал от меня ввода этого Msgstr "[ServiceVariableName] .Credentials = System.Net.CredentialCache.DefaultCredentials". Я делаю это из сети компании, и есть некоторые проблемы с безопасностью и авторизацией.
Мне нужно только иметь возможность отправлять информацию в любом случае, а не получать, поскольку фактический метод, который я буду использовать, будет вставлять информацию в базу данных. Но на данный момент, просто заставить работать Hello World, кажется, достаточно сложно. :)
Спасибо за помощь. Я постараюсь вернуться в нерабочие часы, чтобы проверить и ответить на комментарии, я, несомненно, оставил необходимую информацию.
Пожалуйста, говорите, как вы, с идиотом, я новичок в этом, так что скорее всего, я смогу лучше понять таким образом. :)