2017-07-17 62 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