有没有办法通过代理使以下功能工作?
public T[] ReadStream(System.IO.TextReader reader);
我希望能够代理该reader
实例,以便它可以在读取尝试时从网络下载文件并将其缓存在某处。
或者也许为此目的有一些默认值?
有没有办法通过代理使以下功能工作?
public T[] ReadStream(System.IO.TextReader reader);
我希望能够代理该reader
实例,以便它可以在读取尝试时从网络下载文件并将其缓存在某处。
或者也许为此目的有一些默认值?
使用 WebClient.DownloadFile。如果需要代理,可以设置 WebClient 对象的 Proxy 属性。
这是一个例子:
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);