C# скачать файл из Интернета
Есть ли способ заставить следующую функцию работать через прокси?
public T[] ReadStream(System.IO.TextReader reader);
Я хочу быть в состоянии прокси reader
например, чтобы он мог загрузить файл из Интернета при попытках чтения и кэшировать его где-нибудь.
Или, может быть, для этого есть что-то по умолчанию?
3 ответа
Решение
Используйте WebClient.DownloadFile. Если вам нужен прокси, вы можете установить свойство Proxy вашего объекта WebClient.
Вот пример:
using (var client = new WebClient())
{
client.Proxy = new WebProxy("some.proxy.com", 8000);
client.DownloadFile("example.com/file.jpg", "file.jpg");
}
Вы также можете скачать файл по частям с помощью BinaryReader:
using (var client = new WebClient())
{
client.Proxy = new WebProxy("some.proxy.com", 8000);
using (var reader = new BinaryReader(client.OpenRead("example.com/file.jpg")))
{
reader.ReadByte();
reader.ReadInt32();
reader.ReadBoolean();
// etc.
}
}
Возможно, это то, что вы хотите? Меня также немного смущает формулировка вопроса, учитывая ваши комментарии к предыдущему ответу.
public StreamReader GetWebReader(string uri)
{
var webRequest = WebRequest.Create(uri);
var webResponse = webRequest.GetResponse();
var responseStream = webResponse.GetResponseStream();
return new StreamReader(responseStream);
}
var webRequestObject = (HttpWebRequest) WebRequest.Create("http://whatever");
var response = webRequestObject.GetResponse();
var webStream = response.GetResponseStream();
// Ta-da.
var reader = new StreamReader(webStream);