2013-05-30 2 views
-1

я пытаюсь читать исходный HTML-код на HTTPS URL в C# с помощью следующего кода:Как читать источник HTML с HTTPS URL

WebClient webClient = new WebClient(); 
string htmlString = w.DownloadString("https://www.targetUrl.com"); 

enter image description here

это не работает для меня, как я получаю закодированную строку html. Я пробовал использовать HtmlAgilityPack, но без помощи.

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(htmlString); 
+1

Что это значит 'это не работает для меня, как я получить закодированные HTML string'? – I4V

+0

означает, что он не работает для HTTPS-ссылки, поскольку https://www.targetUrl.com –

+0

'WebClient.DownloadString' не нужно ничего делать специально для загрузки с адреса https. Что значит «закодировано»? Откуда вы знаете, что он закодирован? На что это похоже? – Snixtor

ответ

3

Этого URL возвращается в GZIP сжатой строки. WebClient не поддерживает это по умолчанию, поэтому вместо этого вы захотите перейти к базовому классу HttpWebRequest. Откровенная плагиат ответа на Feroze здесь - Automatically decompress gzip response via WebClient.DownloadData

class MyWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest; 
     request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 
     return request; 
    } 
} 
+0

да, это также работает на http://example.com url, но не работает с https://example.com –

+0

@kavitaverma, затем загрузите страницу с помощью «WebClient.DownloadData» и распакуйте ее самостоятельно. – I4V

0
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
WebClient webClient = new WebClient(); 
string htmlString = w.DownloadString(url); 
Смежные вопросы