如何从 url 中检索 http 响应状态代码?

How can i retrieve the http response status code from an url?

我正在对包含需要随后测试的 URL 的页面进行自动化测试。

我创建了一个方法,我认为它会给我 http 状态代码:

public string ContentUrlHttpRequest()
        {
            HttpWebRequest protocolWebRequest = (HttpWebRequest)WebRequest.Create(ContentUrl());
            protocolWebRequest.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)protocolWebRequest.GetResponse();
            return response.Headers.ToString();
        }

ContentUrl() 是我创建的另一种方法,用于在页面上找到要测试的 url 元素并获取它的值。

我也试过 return response.StatusCode.ToString(); 但我收到的回复是“OK”。

我知道 url 的响应需要 = 200。我有这个断言,将 ContentUrlHttpRequest() 的响应与预期结果 (200) 进行比较:

Assert.AreEqual("200", ContentUrlHttpRequest(), "The Url is not live. Http response = " + ContentUrlHttpRequest());

我从 ContentUrlHttpRequest() 得到的响应不是状态代码,而是:“日期:2021 年 5 月 3 日星期一 09:07:13 GMT”。

我明白为什么会这样,它正在获取正在搜索的页面的 header。但是我怎样才能得到状态码呢?硒有可能吗?我的方法有问题吗,我需要使用不同的方法而不是 Headers?

不幸的是,我无法提供我正在测试的 url 或带有 url 的平台,因为它们是机密的。希望我的问题很清楚,你们可以给我一些指导。

我想你应该使用 response.Status.ToString(); 而不是 response.Headers.ToString();
但是状态不仅包含 200401 这样的数字,还包含文本。
所以如果你打算使用 response.Status.ToString(); 你应该 Assert.True(ContentUrlHttpRequest().contains("200"))
或者您可以使用 response.StatusCode.ToString(); 这将为您提供状态编号本身 String 而无需其他文本。

您不在 return 回复 status code 中。您在 headers 中 return。

您应该将 return 语句替换为:

return ((int)response.StatusCode).ToString();