2009-05-28 146 views
0

我需要能够从使用.net远程处理的代码中区分http 302重定向。如何处理.net远程处理中的http 302重定向?

为了连接到合适的URL,我们尝试它们,直到一个作品。在大多数环境中,第一个url正确地失败,并且状态为 WebExceptionStatus.NameResolutionFailure的System.Net.WebException。 对于使用OpenDNS的客户,这会作为重定向到其指导页面的HTTP 302响应返回。因为我正在使用.net Remoting,所以忽略重定向,并且我收到的错误是System.Runtime.Serialization.SerializationException,它只能通过消息“在分析完成之前遇到的流结束”区分。

这里的OpenDNS的HTTP响应: HTTP/1.0 302实测值 位置:http://guide.opendns.com/?url=demonstration.totallyinvalidexceptonmynetwork.com%2Fi%2Fdo%2Fnot%2Fexist.html 内容类型:文本/ HTML 的Content-Length:0 连接:关闭 日期:星期四,2009年5月28日20时46: 26格林尼治标准时间 服务器:OpenDNS指南

回答

0

我假设发布请求使用HttpWebRequest对象。然后,您可以像下图一样在HttpWebResponse对象中收到响应。 然后你可以检查response.StatusCode属性。如果是302则执行你的逻辑。

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response.StatusCode = HttpStatusCode.Found) 
{ 
    //your code here 
} 

更新:如果您正在使用System.Net.Webclient,那么你可以使用你可以使用它ResponseHeaders属性。 Here是你如何使用它。

+0

.net远程处理不公开HttpWebRequest或WebClient或任何相关的类。调用代码会看到一个代理对象,它看起来像在服务器上调用的类型。 (是的,我知道这是2年前) – sphereinabox 2011-05-31 01:48:56