从WebClient获取HTTP 302重定向的位置?

Mic*_*tum 27 .net c# sockets https http

我有一个返回HTTP 302重定向的URL,我想获取它重定向到的URL.

问题是System.Net.WebClient似乎实际上遵循它,这很糟糕.HttpWebRequest似乎也这样做.

有没有办法制作一个简单的HTTP请求并返回目标位置而不使用WebClient?

我很想做原始套接字通信,因为HTTP很简单,但网站使用HTTPS,我不想做握手.

最后,我不关心我使用哪个类,我只是不希望它遵循HTTP 302重定向:)

Jus*_*tin 22

这很容易做到

假设您已经创建了一个名为myRequest的HttpWebRequest

// don't allow redirects, they are allowed by default so we're going to override
myRequest.AllowAutoRedirect = false;

// send the request
HttpWebResponse response = myRequest.GetResponse();

// check the header for a Location value
if( response.Headers["Location"] == null )
{
  // null means no redirect
}
else
{
  // anything non null means we got a redirect
}
Run Code Online (Sandbox Code Playgroud)

请原谅任何编译错误我没有VS就在我面前,但我过去曾用过这个来检查重定向.


Axe*_*ger 17

HttpWebRequest你可以设置AllowAutoRedirectfalse处理重定向自己.


Luc*_*ero 14

HttpWebRequest有一个属性AllowAutoRedirect,你可以设置为false(它始终是真正的WebClient),然后拿到LocationHTTP标头.