次の関数をプロキシ経由で機能させる方法はありますか?
public T[] ReadStream(System.IO.TextReader reader);
reader
インスタンスをプロキシ化して、読み取り試行時に Web からファイルをダウンロードし、どこかにキャッシュできるようにしたいと考えています。
それとも、この目的のために何かデフォルトがありますか?
次の関数をプロキシ経由で機能させる方法はありますか?
public T[] ReadStream(System.IO.TextReader reader);
reader
インスタンスをプロキシ化して、読み取り試行時に Web からファイルをダウンロードし、どこかにキャッシュできるようにしたいと考えています。
それとも、この目的のために何かデフォルトがありますか?
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);