0

我需要检查给定主机是否正在回复 HTTP Web 请求。所以,我需要做的就是 HttpWebRequest.Create(someURI) 并检查响应,对吧?

HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(targetUri);

TimeSpan timeOut = TimeSpan.FromSeconds(timeOutInSeconds);
webRequest.Timeout = (int)timeOut.TotalMilliseconds;
webRequest.Proxy = proxy;
webRequest.AllowAutoRedirect = false; // get extra information with this turned off, but doesn't affect the problem

response = webRequest.GetResponse() as HttpWebResponse;

好吧,出现的问题是,如果 someURI 被我们的防火墙阻止(例如“gibber.com”被阻止),那么我会返回一个有效的 HttpWebResponse,它不会抛出,并且 ResponseURI 属性设置为被阻止URI(“gibber.com”)即使它实际上是我们的服务器响应。

在 HTTP 标头中会有一个 Location 键,它的值是本地服务器的 IP。但是我不想解析文本来确定请求是否真的被退回。这样做的正确方法是什么?

谢谢

4

1 回答 1

0

检查 response.ResponseUri 是否对应于给定的主机或您的防火墙。

于 2012-08-17T17:57:25.253 回答