我有一個返回HTTP 302重定向的URL,我想獲取它重定向到的URL。從WebClient獲取HTTP 302重定向的位置?
問題是,System.Net.WebClient似乎實際上跟着它,這是不好的。 HttpWebRequest似乎也這樣做。
有沒有辦法制作一個簡單的HTTP請求並取回沒有WebClient的目標位置?
我很想做原始套接字通信,因爲HTTP足夠簡單,但該網站使用HTTPS,我不想做握手。
最後,我不在乎我使用哪一類,我只是不希望它遵循HTTP 302個重定向:)
我有一個返回HTTP 302重定向的URL,我想獲取它重定向到的URL。從WebClient獲取HTTP 302重定向的位置?
問題是,System.Net.WebClient似乎實際上跟着它,這是不好的。 HttpWebRequest似乎也這樣做。
有沒有辦法制作一個簡單的HTTP請求並取回沒有WebClient的目標位置?
我很想做原始套接字通信,因爲HTTP足夠簡單,但該網站使用HTTPS,我不想做握手。
最後,我不在乎我使用哪一類,我只是不希望它遵循HTTP 302個重定向:)
在HttpWebRequest
您可以設置AllowAutoRedirect
到false
處理重定向自己。
HttpWebRequest
有一個屬性AllowAutoRedirect
,您可以將其設置爲false(it is always true for WebClient
),然後獲取Location
HTTP標頭。
這是很容易做到的
讓我們假設你已經創建了一個名爲HttpWebRequest的myRequest
// 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
}
任何藉口編譯錯誤,我沒有VS就在我的面前,但是我過去用它來檢查重定向。
此外,對於只需要新位置的人,HttpResponseMessage
擁有RequestMessage
屬性。有時它可能很有用,因爲WebClient
不支持在設置後更改AllowAutoRedirect
屬性。
好注意,它隱藏在該鏈接指向的部分正上方的頁面上。 https://msdn.microsoft.com/zh-cn/library/system.net.webclient.aspx?f=255&MSPPError=-2147217396#Examples – dragon788 2016-11-04 18:53:05