Invoke a Web Service Call

I would like to invoke a web service call from a coded step in Test Studio and verify its response.

Solution

Below you will find a code sample which demonstrates one possible solution for this automation challenge. This sample requires that you add references to the following assemblies:

  • System.Net

  • System.IO

  • System.Xml

See this article. which explains how to add an assembly reference in Test Studio (Standalone version).

// Create the WebRequest object we'll use for sending the request
WebRequest request = WebRequest.Create("http://money.service.msn.com/StockQuotes.aspx?v=1&symbols=$INDU,AAPL,NFLX");
request.Method = "GET";

// Send the request and read the response
using (WebResponse response = request.GetResponse())
{
    // Verify the status code is OK
    Assert.AreEqual<string>("OK", ((HttpWebResponse)response).StatusDescription);
    // Get the stream containing content returned by the server.
    using (Stream responseStream = response.GetResponseStream())
    {
        // Parse the response into an XML document and validate we got the data expected
        // It should look like this:

        // <?xml version="1.0" ?>
        // <quotesdata>
        // <ticker symbol="$INDU" ... </quotesdata>

        XmlDocument doc = new XmlDocument();
        doc.Load(responseStream);
        Assert.AreEqual<int>(2, doc.ChildNodes.Count);
        Assert.AreEqual<int>(3, doc.ChildNodes[1].ChildNodes.Count);
        XmlNode aapl = doc.SelectSingleNode("/quotesdata/ticker[@symbol=\"AAPL\"]");
        XmlNode nflx = doc.SelectSingleNode("/quotesdata/ticker[@symbol=\"NFLX\"]");
        XmlNode indu = doc.SelectSingleNode("/quotesdata/ticker[@symbol=\"$INDU\"]");
        Assert.IsNotNull(aapl);
        Assert.IsNotNull(nflx);
        Assert.IsNotNull(indu);
    }
}
' Create the WebRequest object we'll use for sending the request
Dim request As WebRequest = WebRequest.Create("http://money.service.msn.com/StockQuotes.aspx?v=1&symbols=$INDU,AAPL,NFLX")
request.Method = "GET"

' Send the request and read the response
Using response As WebResponse = request.GetResponse()
    ' Verify the status code is OK
    Assert.AreEqual(Of String)("OK", DirectCast(response, HttpWebResponse).StatusDescription)
    ' Get the stream containing content returned by the server.
    Using responseStream As Stream = response.GetResponseStream()
        ' Parse the response into an XML document and validate we got the data expected
        ' It should look like this:

        ' <?xml version="1.0" ?>
        ' <quotesdata>
        ' <ticker symbol="$INDU" ... </quotesdata>

        Dim doc As New XmlDocument()
        doc.Load(responseStream)
        Assert.AreEqual(Of Integer)(2, doc.ChildNodes.Count)
        Assert.AreEqual(Of Integer)(3, doc.ChildNodes(1).ChildNodes.Count)
        Dim aapl As XmlNode = doc.SelectSingleNode("/quotesdata/ticker[@symbol=""AAPL""]")
        Dim nflx As XmlNode = doc.SelectSingleNode("/quotesdata/ticker[@symbol=""NFLX""]")
        Dim indu As XmlNode = doc.SelectSingleNode("/quotesdata/ticker[@symbol=""$INDU""]")
        Assert.IsNotNull(aapl)
        Assert.IsNotNull(nflx)
        Assert.IsNotNull(indu)
    End Using
End Using