使用 asp.net,如何获取 WebRequest 对象的状态?

问题描述

我正在编写一些测试以确保我收到 200 状态,即使没有数据存在。我可以通过我的测试连接到后端,但不知道如何读取数据,然后在 Assert 语句中使用数据来确认状态代码为 200。

    public void DataControllerTest_NoData(long dataId)
  {
        var uri = "http://localhost:8311/api/Data?columnId=";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + dataId);
        request.Headers.Add("Authorization","Bearer " + token);
        request.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        try
      {
        response = (HttpWebResponse)request.GetResponse();
        statusCode = response.StatusCode.ToString();
      }
       catch (WebException we)
      {
       statusCode = ((HttpWebResponse)we.Response).StatusCode.ToString();
      }

      Assert.AreEqual(HttpStatusCode.OK,statusCode);
      response.Close();
 }

解决方法

据我所知,如果您看到错误,您希望通过如下所示的小更正调整代码来找到状态代码。

public void DataControllerTest_NoData(long dataId)
{
     var uri = "http://localhost:8311/api/Data?columnId=";
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + dataId);
     request.Headers.Add("Authorization","Bearer " + token);
     request.Method = "GET";
     

     try
     {
         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         response = (HttpWebResponse)request.GetResponse();
         statusCode = response.StatusCode.ToString();
         response.Close();
     }
     catch (WebException we)
     {
         statusCode = ((HttpWebResponse)we.Response).StatusCode.ToString();
     }
     Assert.AreEqual(HttpStatusCode.OK,statusCode);
}

如果要查找异常文本的代码,请使用以下代码

try
{
   HttpWebResponse response = (HttpWebResponse)request.GetResponse();
   response = (HttpWebResponse)request.GetResponse();
   statusCode = response.StatusCode.ToString();
   response.Close();
}
catch (WebException we)
{
   string resultError = we.Message;
}