HtmlAgilityPack에서 문서에 URL을로드 할 때 시간 제한을 설정하기 위해 webRequest를 어떻게 추가 할 수 있습니까?

c# html-agility-pack

문제

URL을로드 할 때이 코드가 있습니다.

private List<string> test(string url, int levels,DoWorkEventArgs eve)
        {
            HtmlWeb hw = new HtmlWeb();
            List<string> webSites;
            try
            {
                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Loading The Url: " + url + "..." , Color.Red); }));
                doc = hw.Load(url);
                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Done " + Environment.NewLine, Color.Red); }));

때로는 URL을로드하는 중 url 변수의 웹 사이트가 응답하지 않아 많은 시간이 걸리는 경우가 있습니다. 타임 아웃을 추가하여 X 초 후에 "타임 아웃이 있습니다"와 같은 메시지를 던질 수 있습니다.

이제 HtmlAgilityPack에는 시간 초과 속성이나 클래스가 없습니다. 그래서 Form1에서 webrequest와 webresponde를 사용하고 url을로드하기 전에이 함수를 호출하는이 새로운 함수에서 타임 아웃을 설정할 새 함수를 작성하려고 생각했습니다.

누군가 내 코드를 사용하여 새 함수를 만드는 방법을 보여줄 수 있습니까? 또한 시간 제한이 있습니다.

감사.

수락 된 답변

나는 html 민첩성의 타임 아웃에 대해 아무것도 모른다. 하지만 나는 이것을 이렇게 사용하고 있습니다. 어쩌면 당신에게 도움이 될 것입니다. 행운을 빕니다.

    String Data = GetURLData(url);
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(Data);




    public static string GetURLData(string URL)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
            request.UserAgent = "Omurcek";
            request.Timeout = 4000;
            WebResponse response = request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }   

        catch (Exception ex )
        {
            LogYaz("Receive DATA Error : " + URL   + ex.ToString());
            return "";
        }

    }

인기 답변

출처 : http://blog.jongallant.com/2012/07/htmlagilitypack-set-timeout.html#.VBY-_fmSz3Q

var web = new HtmlWeb();
web.PreRequest = delegate(HttpWebRequest webRequest)
{
     webRequest.Timeout = 4;
     return true;
};
var doc = web.Load("http://www.msn.com/");



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.