Calling Web Services in classic ASP
We can call web service SOAP toolkit also. But invoking
the service using the XMLHTTP object was more easier
& fast.
To create the Service I used the normal Web Service in
.Net 2.0 with [Webmethod]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string name)
{
return name + " Pay my dues :) "; // a reminder to pay my consultation fee :D
}
}
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
Alternatively, you can enable these protocols for all Web services on the computer by editing the <protocols> section in Machine.config. The following example enables HTTP GET, HTTP POST, and also SOAP and HTTP POST from localhost:
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="HttpPostLocalhost"/>
<!-- Documentation enables the documentation/test pages -->
<add name="Documentation"/>
</protocols>
By adding these entries I am enabling the HTTPGET
& HTTPPOST (After .Net 1.1 by default HTTPGET
& HTTPPOST is disabled because of security
concerns)
The .NET Framework 1.1 defines
a new protocol that is named HttpPostLocalhost. By
default, this new protocol is enabled. This protocol
permits invoking Web services that use HTTP POST
requests from applications on the same computer.
This is true provided the POST URL uses
http://localhost, not http://hostname. This permits
Web service developers to use the HTML-based test
form to invoke the Web service from the same
computer where the Web service resides.
Classic ASP Code to call Web service
<%Option Explicit
-
Dim objRequest, objXMLDoc, objXmlNode
-
Dim strRet, strError, strNome
-
Dim strName
-
strName= "deepa"
-
Set objRequest = Server.createobject("MSXML2.XMLHTTP")
-
With objRequest
-
.open "GET", "http://localhost:3106/WebService1.asmx/HelloWorld?name=" & strName, False
-
.setRequestHeader "Content-Type", "text/xml"
-
.setRequestHeader "SOAPAction", "http://localhost:3106/WebService1.asmx/HelloWorld"
-
.send
-
End With
-
Set objXMLDoc = Server.createobject("MSXML2.DOMDocument")
-
objXmlDoc.async = false
-
Response.ContentType = "text/xml"
-
Response.Write(objRequest.ResponseText)
-
%>
In Line 6 I created an MSXML XMLHTTP object.
Line 9 Using the HTTPGET protocol I am openinig connection to WebService
Line 10:11 – setting the Header for the service
In line 15, I am getting the output from the webservice in XML Doc format & reading the responseText(line 18).
In line 9 if you observe I am passing the parameter strName to the Webservice You can pass multiple parameters to the Web service by just like any other QueryString Parameters.
In similar fashion you can invoke the Web service using HTTPPost. Only you have to ensure that the form contains all th required parameters for webmethod.
Happy coding !!!!!!!