簡體   English   中英

HttpClient沒有成功狀態代碼

[英]HttpClient no success status code

我試圖通過HttpClient訪問此鏈接 ,但是每次它說IsSuccessStatusCodefalse 過去我可以獲取內容,但現在無法正常工作。 它給了我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


302狀態碼

所請求的資源臨時位於其他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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM