向服务发送请求,获取响应,验证响应
本文关键字:响应 获取 验证 请求 服务 | 更新日期: 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);