Используйте Webclient для получения ресурса страницы в C# - PullRequest
1 голос
/ 06 января 2020

Я использую приведенный ниже код для получения страницы Source, но он не возвращает данные о свойствах:

string url = "http://www.tsetmc.com/Loader.aspx?ParTree=15131F";
            WebClient client = new WebClient();
            client.Headers["Accept-Encoding"] = "gzip";
            string pageSource = client.DownloadString(url);

Кодировка содержимого сайта gzip

image

1 Ответ

2 голосов
/ 06 января 2020

Установив client.Headers["Accept-Encoding"] = "gzip";, вы просите сервер отправить сжатый ответ. Тем не менее, вы не распаковываете это. Это приводит к неправильному ответу.

Согласно { ссылка }, вы можете WebClient автоматически распаковать ответы, изменив HttpWebRequest, который он создает:

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

string url = "http://www.tsetmc.com/Loader.aspx?ParTree=15131F";
WebClient client = new MyWebClient();
// don't set the Accept-Encoding header here; it will be done automatically
string pageSource = client.DownloadString(url);
...