2

次の関数をプロキシ経由で機能させる方法はありますか?

public T[] ReadStream(System.IO.TextReader reader);

readerインスタンスをプロキシ化して、読み取り試行時に Web からファイルをダウンロードし、どこかにキャッシュできるようにしたいと考えています。

それとも、この目的のために何かデフォルトがありますか?

4

3 に答える 3

8

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.
    }
}
于 2011-04-08T21:47:45.300 に答える
1

おそらくこれはあなたが望むものですか?また、前の回答に対するコメントを考えると、質問の文言にも少し混乱しています。

public StreamReader GetWebReader(string uri)
{
    var webRequest = WebRequest.Create(uri);
    var webResponse = webRequest.GetResponse();
    var responseStream = webResponse.GetResponseStream();
    return new StreamReader(responseStream);
}
于 2011-04-08T22:20:06.717 に答える
0
var webRequestObject = (HttpWebRequest) WebRequest.Create("http://whatever");
var response = webRequestObject.GetResponse();
var webStream = response.GetResponseStream();
// Ta-da.
var reader = new StreamReader(webStream);
于 2011-04-08T22:14:49.330 に答える