2017-09-22 157 views
0

我想使用HttpClientHandler設置anglesharp.io的超時值。使用HttpClientHandler設置超時

這個問題表明,它是可能的:https://github.com/AngleSharp/AngleSharp/issues/266

我得到頁是這樣的:

 NetworkCredential proxyCreds = new NetworkCredential(proxy.User, proxy.Pass); 

     WebProxy wProxy = new WebProxy(proxy.Ip + ":" + proxy.Port, false) 
     { 
      UseDefaultCredentials = false, 
      Credentials = proxyCreds, 
     }; 

     HttpClientHandler httpClientHandler = new HttpClientHandler() 
     { 
      Proxy = wProxy, 
      PreAuthenticate = true, 
      UseDefaultCredentials = false 
     }; 

     var config = Configuration.Default.WithRequesters(httpClientHandler); 

     var document = await BrowsingContext.New(config).OpenAsync(address); 

我不能看到可用來設置超時的任何屬性。我如何設置超時時間?

+0

您無法在'HttpClientHandler'上設置超時。您需要將'HttpClientHandler'傳遞給'HttpClient'。檢查此 - https://blogs.msdn.microsoft.com/henrikn/2012/08/07/httpclient-httpclienthandler-and-webrequesthandler-explained/ –

+0

Anglesharp正在抽象此過程。我鏈接的頁面說我需要製作IRequester,但我不確定那是什麼。我已經直接使用httpclient做了解決方法,但很好奇如何使它在angleharp中工作。 – Guerrilla

+0

那麼在這種情況下,你可能必須通過角度衝突的API /文檔 –

回答

1

以上評論是正確的。 AngleSharp正在抽象請求者 - 以允許多種類型的請求者,並在需要時提供靈活性。基本的接口是IRequester(注意:沒有特意的HTTP--在AngleSharp.Io中,我們還發現,例如,訪問本地文件系統的file:// URI的FileRequester)。

我們現在可以實現我們自己的請求者,或者只使用AngleSharp.Io中的HttpClientRequester,構造函數重載接受HttpClient實例。

var client = new HttpClient(); 
client.Timeout = MyCustomTimeout; //Whatever value you want it to be 
var requester = new HttpClientRequester(client); 

現在的問題是你如何使用這個請求者?我們只需要創建一個配置(像往常一樣),並使用默認加載擴展方法(像往常一樣),但是,這一次我們的定製請求:

// Assumes we do not want to provide custom options for the loaders 
var requesters = new [] { requester }; 
var configuration = Configuration.Default.WithDefaultLoader(requesters: requesters); 

希望這有助於!

+1

非常感謝Florian!我知道必須有一種方法,但我無法弄清楚,所以我使用HttpClient傳遞的字符串進行了處理。我將來會嘗試這種方式。 – Guerrilla

+0

對於像我這樣的人,可以在'var configuration = Configuration.Default.WithDefaultLoader(requesters:requesters)'中使用Florian的請求者;'使用而不是請求者 - >新的[] {請求者}。也許很明顯,但不適合我。在某種程度上,這是弗洛裏安給我在這裏的答案:https://github.com/AngleSharp/AngleSharp/issues/367 –

+0

謝謝@samuelguedon - 我已經添加了請求者的聲明到我的答案! –