HttpWebRequest.Create和防火墙

时间:2012-08-17 16:25:43

标签: c# httpwebrequest httpwebresponse system.net

我需要检查给定主机是否正在回复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。但是,如果请求实际被退回,我不想解析文本。这样做的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

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