![](/img/trans.png)
[英]HTTP status code 403 received when trying to retrieve response from GetAsync
[英]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();
但我收到的回復是“好的”。
我知道來自 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。 但是我怎么能得到狀態碼呢? Selenium 可以嗎? 我的方法是否有問題,而不是 Headers 我需要使用不同的東西?
不幸的是,我無法提供我正在測試的 url,或者帶有 url 的平台,因為它們是機密的。 希望我的問題很清楚,你們可以給我一些指導。
我想你應該使用response.Status.ToString();
而不是response.Headers.ToString();
但狀態不僅包含200
或401
之類的數字,還包含文本。
因此,如果您要使用response.Status.ToString();
你應該Assert.True(ContentUrlHttpRequest().contains("200"))
或者你可以使用response.StatusCode.ToString();
這將為您提供狀態編號本身 String 而無需其他文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.