2017-07-17 63 views
1

我想確定一個URL是否有效如果沒有觸發返回頁面的服務器響應。 (即:不消耗網頁)。如果有效,確定URL的有效性而不觸發頁面?

I've found this very clever attempt but it doesn't seem to work at least on an MVC action兵不血刃動作本身(順便說一下,使用硒的webdriver並啓動FirefoxDriver實例,這我怎麼知道該網頁已被消耗。)

有沒有辦法說「嘿,服務器,我不想要這個頁面,但它存在嗎?「沒有服務器實際上試圖回傳頁面?

+0

我確實說過要測試的頁面在MVC站點內。調用代碼技術是100%不相關的,因爲我可以以任何必要的方式實現它。 – MetalPhoenix

+0

對不起,直到現在還沒有得到你的問題,你嘗試使用'UrlExists()'?檢查[this](https://stackoverflow.com/questions/12957295/asp-net-check-if-url-exists-before-opening-popup)。 –

+0

你不能只是返回一個空的迴應?我不認爲我完全理解這一點。服務器將不得不返回一些東西給你,以知道url是否有效。 – Steveadoo

回答

1

您可以發送http「HEAD」命令(而不是「GET」,「POST」等)來返回頁眉。如果頁面存在,服務器應該返回200,如果不存在則返回404。

事情是這樣的:

HttpClient httpClient = new HttpClient(); 

HttpRequestMessage request = 
      new HttpRequestMessage(HttpMethod.Head, 
            new Uri("http://www.google.com")); 

HttpResponseMessage response = await httpClient.SendAsync(request); 

祝你好運!

+0

謝謝。它仍然導致控制器發起行動。然而,有趣的方法。 – MetalPhoenix

+0

你可以試試OPTIONS或TRACE動詞。 – Kevin