我需要檢測何時有重定向。我的第一個想法是檢查 301 的狀態代碼,但對于:
var link = "https://grnh.se/8dc368b82us?s=LinkedIn&source=LinkedIn";
var responseMessage = await httpClient.GetAsync(link);
responseMessage 回傳“OK”,但在瀏覽器中此鏈接回傳 301 并重定向。

因此,如果我不能依賴這一點,那么我決定只將請求 URI 與回應 URI 進行比較。
GetAsync 回傳一個Task<HttpResponseMessage>但 HttpResponseMessage沒有回應 URI 的屬性。
https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0
System.Net.WebResponse 包含回應 URI 的屬性,但我可以將它與 HttpClient 一起使用嗎?或者我必須使用 WebRequest 來請求?
https://docs.microsoft.com/en-us/dotnet/api/system.net.webresponse?view=net-5.0
有沒有更好的辦法?
注意:這將掃描數百萬個鏈接,因此我更愿意實體化一個 HttpClient。Microsoft 建議使用 HttpClient 而不是 WebRequest:https ://docs.microsoft.com/en-us/dotnet/api/system.net.webresponse ? view = net-5.0
uj5u.com熱心網友回復:
您可以像這樣禁用自動重定向:
var httpClient = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
var link = "https://grnh.se/8dc368b82us?s=LinkedIn&source=LinkedIn";
var responseMessage = await httpClient.GetAsync(link);
然后您可以檢查重定向responseMessage.StatusCode與常見重定向代碼的比較:
MovedPermanently = 301
Redirect = 302
TemporaryRedirect = 307
新位置將在responseMessage.Headers.Location,如果需要,您可以再次請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353478.html
上一篇:將一個結構的成員復制到另一個C#
下一篇:實體與繼承
