Using Native HTTP Support in SQL Server 2005
In this tutorial you will learn about Using Native HTTP Support, Native HTTP Support in SQL Server 2005 and Configuring Native HTTP Support .
Using Native HTTP Support
SQL Server 2005 has the built in capability of delivering fully functional web services. The HTTP endpoint is more than just an extension of XML abilities. It can return row sets, scalar values, messages and errors serialized into XML automatically. The technology utilizes XML, supports sessions, and monitors SOAP connections and other database server connections.
SQL Server 2005 permits user to create stored procedures and add them to a HTTP endpoint to create a web service that is immediately deployable. The syntax for the web service is as under:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CREATE PROCEDURE StudentCourse List ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELECT X, LASTNAME X, FIRSTNAME, X COURSE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FROM Student. Contact AS X ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INNER JOIN CourseMaster AS Y ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ON X.StudentID= Y.StudentID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORDER BY X.LastName. X.FirstName ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CREATE ENDPOINT Course ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STATE=STARTED ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AS HTTP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l;
( ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PATH= “/StudentCourse” ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AUTHENTICATION=(INTEGRATED), ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PORTS= (CLEAR) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FOR SOAP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
( ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WEBMETHOD ‘StudentCourseList’ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Name= ‘Exforsys.dbo.StudentCourseList’), ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATABASE = ‘Exforsys’, ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WSDL =DEFAULT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Once this is done, a reference can be added to the web service in C# project and it can be used. The syntax for adding the reference is
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Private void btnStuList_Click(object sender, systems.EventArgs e) ;;;;;;
{ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Win2k301_Stu.Course proxy= new win2k301_stu.Course(); ;;;;;;;;;;;;;;;;;;
Proxy.Credentials=System.Net.CredentialCache.DefaultCredentials; ;;;;;;;
Object[] stu=proxy.StudentCourseList(); ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DataSet reulttDs=(DataSet) stu[0]; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DataTable dt=resulttds.Tables[0]; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dgvStuList.Datasource=dt; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dgvStuList.Refresh(); ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
The above web service now has to be consumed. This can be done by using the two methods defined for the purpose. The first of these is the HTML page that uses the Microsoft XML core service and client side JavaScript; the next one is the Winforms-based solution in C#.
Creating the HTML document
This HTML page is required for displaying the results requested from the web service. The syntax could be as under:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
< html:html xmlns:html= “http://www.w3.org/1999/xhtml” > ;;;;;;;;;;;;;;;
< script > < / script > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;
< body > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;
StudentID: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;
< input type=”text”value= “1”id= “ID” > ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;
< input type= “button” onclick= “GetCourse()”value= “GET” > ;;;;;;; ;;;;
< div id= “divResult” > < / div > ;;;;;;; ;;;; ;;;;;;; ;;;; ;;;;;;; ;;;;
< xml id= “XSL” src= “CourseDescription.xsl” > < / xml > ;;;;;;; ;;;; ;;
< / body > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;
< / html:html > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
In this instance inputs on the ID is received and the web service is called using the button “Get”. This button calls the javaScript that does the work.
The results are then obtained by creating a Simple Object Access Protocol(SOAP) message to be sent to the web service. The process begins when the button click calls the “GetCourse()” function. A location of the web service is assigned to a variable. Next the SendMessage function passes in this URL the SOAP message as a string. The SendMessage then creates the HTTP client using the MSXML in the HTTP variable. Then an XML Document object model is created in the request variable. The SoapEnvelope function then uses the SOAP body created to return the SOAP request as XML. This is loaded into the DOM document and sent to the web service. The response is returned back to the original function “GetCourse()”. This pulls the CourseDespcription node and transforms it for display in the div called divResult.
More sophisticated clients can be created using C#. Since this is beyond the scope of this tutorial we shall suffice by saying that SQL Server 2005 has truly made the work of the programmer simpler!