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

C# 如何从url检索http响应状态代码?,c#,selenium,httprequest,httpresponse,http-response-codes,C#,Selenium,Httprequest,Httpresponse,Http Response Codes,我正在自动测试一个包含URL的页面,该URL需要进行测试 我创建了一个方法,我相信它会给我http状态码: public string ContentUrlHttpRequest() { HttpWebRequest protocolWebRequest = (HttpWebRequest)WebRequest.Create(ContentUrl()); protocolWebRequest.Method = "GET&q

我正在自动测试一个包含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的元素并获取其值

我还尝试了
返回response.StatusCode.ToString()但是我收到的回复是“OK”

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

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

我理解为什么会发生这种情况,它是获取正在搜索的页面标题。但是我怎样才能得到状态码呢?硒有可能吗?我的方法是否有问题,我需要使用不同的方法来代替标题


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

我想你们应该使用
response.Status.ToString()而不是
response.Headers.ToString()
但是状态不仅包含像
200
401
这样的数字,还包含文本。
因此,如果要使用
response.Status.ToString()
您应该
Assert.True(ContentUrlHttpRequest().contains(“200”))


或者您可以使用
response.StatusCode.ToString()
这将为您提供状态号本身字符串,而不需要额外的文本。

我想您应该使用
response.status.ToString()而不是
response.Headers.ToString()
但是状态不仅包含像
200
401
这样的数字,还包含文本。
因此,如果要使用
response.Status.ToString()
您应该
Assert.True(ContentUrlHttpRequest().contains(“200”))


或者您可以使用
response.StatusCode.ToString()这将为您提供状态号本身字符串,而无需其他文本。

您不会返回响应。您正在返回标题

您应该用以下语句替换return语句:

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

您没有返回响应。您正在返回标题

您应该用以下语句替换return语句:

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

也许你可以使用
(int)response.StatusCode
这里提到的:可能是response.getStatusCode?也许你可以使用
(int)response.StatusCode>这里提到的:可能是response.getStatusCode?之前也尝试过,抱歉我没有在帖子中引用它。使用状态我收到“OK”而不是状态代码。不幸的是,我被要求专门获取状态代码,以便在测试失败的情况下可以稍后对其进行调试。那么我编辑的答案呢?您确定状态/状态代码是
OK
但没有编号吗?也许不是200而是2XX或3XX?所以我没注意到你说的。之前的状态。我只是假设是。状态码。状态码为“OK”的回复。非常确定状态码为“OK”,并且没有其他内容。因此之前也尝试过,很抱歉,我没有在帖子中引用它。使用状态我收到“OK”而不是状态代码。不幸的是,我被要求专门获取状态代码,以便在测试失败的情况下可以稍后对其进行调试。那么我编辑的答案呢?您确定状态/状态代码是
OK
但没有编号吗?也许不是200而是2XX或3XX?所以我没注意到你说的。之前的状态。我只是假设是。状态码。状态代码为“OK”的响应。非常确定状态代码为“OK”,没有其他内容。我从状态代码得到的响应为“OK”。我忘了在我的帖子上提到我也试过。我现在就编辑这篇文章。@DjNewma请检查更新后的答案完美,这对我很有用。我对c#很陌生,你能告诉我(int)在命令之前做什么吗?或者,您能告诉我在哪里可以阅读有关它和其他变体的信息吗?
(int)
将状态代码的枚举值强制转换为int类型。换句话说,它将其转换为int。然后我获取整个结果并将其转换为string,因为这是ContentUrlHttpRequest方法的返回类型。更多信息:我从StatusCode得到的响应是“OK”。我忘了在我的帖子上提到我也试过。我现在就编辑这篇文章。@DjNewma请检查更新后的答案完美,这对我很有用。我对c#很陌生,你能告诉我(int)在命令之前做什么吗?或者,您能告诉我在哪里可以阅读有关它和其他变体的信息吗?
(int)
将状态代码的枚举值强制转换为int类型。换句话说,它将其转换为int。然后我获取整个结果并将其转换为string,因为这是ContentUrlHttpRequest方法的返回类型。有关更多信息: