簡體   English   中英

如何從 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(); 但我收到的回復是“好的”。

我知道來自 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 的平台,因為它們是機密的。 希望我的問題很清楚,你們可以給我一些指導。

您沒有返回響應狀態代碼 您正在返回標題。

您應該將 return 語句替換為:

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

我想你應該使用response.Status.ToString(); 而不是response.Headers.ToString();
但狀態不僅包含200401之類的數字,還包含文本。
因此,如果您要使用response.Status.ToString(); 你應該Assert.True(ContentUrlHttpRequest().contains("200"))
或者你可以使用response.StatusCode.ToString(); 這將為您提供狀態編號本身 String 而無需其他文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM