![](/img/trans.png)
[英]HttpClient System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized)
[英]HttpClient no success status code
我試圖通過HttpClient
訪問此鏈接 ,但是每次它說IsSuccessStatusCode
為false
。 過去我可以獲取內容,但現在無法正常工作。 它給了我302
響應代碼。
我正在嘗試的代碼是:
var handler = new HttpClientHandler()
{
AllowAutoRedirect = false,
UseCookies = true,
PreAuthenticate = true,
UseDefaultCredentials = true
};
var client = new HttpClient(handler);
//client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
var data = await client.GetAsync(Url);
if (!data.IsSuccessStatusCode)
{
;
}
var doc = new HtmlDocument();
var content = await data.Content.ReadAsStringAsync();
有人可以告訴我我在這里做錯什么,如何使它起作用嗎? 這樣我就可以獲得內容。 謝謝PS,我已獲得網站所有者的許可使用該網站。
AllowAutoRedirect = false // change this to true
IsSuccessStatusCode
怎么了? 讓我們首先查看HttpResponseMessage類 ,以了解IsSuccessStatusCode
屬性的實現。
public bool IsSuccessStatusCode
{
get { return ((int)statusCode >= 200) && ((int)statusCode <= 299); }
}
如您所見,中的302狀態代碼將返回
false
。
所請求的資源臨時位於其他URI下。 由於重定向有時可能會更改,因此客戶端應繼續將Request-URI用於將來的請求。 僅當由Cache-Control或Expires標頭字段指示時,此響應才可緩存。
臨時URI應該由響應中的Location字段給出。 除非請求方法是HEAD,否則響應的實體應該包含簡短的超文本注釋,並帶有指向新URI的超鏈接。
如果響應GET或HEAD以外的請求而收到302狀態碼,則用戶代理不得自動重定向請求,除非用戶可以確認,因為這可能會更改發出請求的條件。
資料來源: https : //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.