Я пытаюсь использовать С# WebClient для загрузки файла.
Вот URL-адрес: http://www.czce.com.cn/cn/DFSStaticFiles/Future/2018/20180821/FutureDataClearParams.txt
Если я загружаю его вручную, все выглядит нормально. Однако, если я использую WebClient для загрузки файла, содержимое будет повреждено. Я пытался использовать много разных методов кодирования. Ниже приведен минимальный код для воспроизведения проблемы.
class Program
{
static void Main(string[] args)
{
WebClient client = new WebClient();
client.Proxy = new WebProxy("some company proxy");
string url = "http://www.czce.com.cn/cn/DFSStaticFiles/Future/2018/20180821/FutureDataClearParams.txt";
client.DownloadFile(url, @"D:\file.txt");
}
}
Теперь проблема решена, спасибо всем за помощь(@Gauravsa, @John). Файл действительно GZIP.
Решение:
public class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest;
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
return request;
}
}
WebClient.Encoding
используется во время загрузки, а не загрузки. При загрузке вместо этого используется кодировка, установленная сервером, так что это отвлекающий маневр. - person Lasse V. Karlsen   schedule 22.08.2018DownloadFile
работают без проблем. Я получаю тот же самый файл, как если бы я загружал его через свой веб-браузер (отсюда мой отрицательный голос за вопрос). - person Llama   schedule 22.08.2018