向服务发送请求,获取响应,验证响应

本文关键字:响应 获取 验证 请求 服务 | 更新日期: 2023-09-27 17:53:06

我正在寻找使用c# .net向web服务(SOAP)发送请求的示例代码
获取响应,然后自动验证响应

交货:http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit将celcius数据发送到此web服务并获得一些响应,然后使用预期值验证此响应。

我希望使用c# nunit框架以编程方式做到这一点
有人知道如何实现这一点吗?

向服务发送请求,获取响应,验证响应

web服务本身不应该有值得测试的逻辑

您不能轻松地测试web服务调用,也不应该这样做。这是框架的责任。

您的web服务应该是完成实际工作的类的包装器。然后,您将使用逻辑对类进行单元测试,而不是使用web服务。

在您的示例中,您应该有一个类,其职责是将华氏温度转换为摄氏温度。执行此操作的公共方法将由单元测试覆盖。

为实际执行转换而调用的结束点(例如,.asmx文件中的方法)只需调用上面的代码。

using System;  
using System.IO;  
using System.Net;  
using System.Text;  
using System.Xml;  
using NUnit.Framework;  

namespace Examples.System.Net  
{  
    public class WebRequestPostExample  
    {  
        public static void Main()  
        {  
String b = "OK";  
            // Create a request using a URL that can receive a post. 

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("your end point here");  

        request.Headers.Add ("SOAPAction", "some soap action here");  
        request.ContentType = "text/xml;charset='"utf-8'"";  
        request.Accept = "text/xml";  
        request.Method = "POST";

        // Set the Method property of the request to POST.  
        request.Method = "POST";  
        // Create POST data and convert it to a byte array.  
        string postData = @"<s:Envelope xmlns:s="Som request that you want to send";  
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);  
        request.ContentLength = byteArray.Length;  
        Stream stream = request.GetRequestStream();  

        stream.Write(byteArray, 0, byteArray.Length);  
        int a = 0;  
        stream.Close();  
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
        Assert.AreEqual(response.StatusCode, b, "Pass");  

        Console.WriteLine(((HttpWebResponse)response).StatusDescription);