本文整理汇总了C#中System.IO.Compression.GZipStream.?.CopyTo方法的典型用法代码示例。如果您正苦于以下问题:C# GZipStream.?.CopyTo方法的具体用法?C# GZipStream.?.CopyTo怎么用?C# GZipStream.?.CopyTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.IO.Compression.GZipStream
的用法示例。
在下文中一共展示了GZipStream.?.CopyTo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetResponse
///<summary>
///HTTPの応答を処理し、引数で指定されたストリームに書き込み
///</summary>
///<remarks>
///リダイレクト応答の場合(AllowAutoRedirect=Falseの場合のみ)は、headerInfoインスタンスがあればLocationを追加してリダイレクト先を返却
///WebExceptionはハンドルしていないので、呼び出し元でキャッチすること
///gzipファイルのダウンロードを想定しているため、他形式の場合は伸張時に問題が発生する可能性があります。
///</remarks>
///<param name="webRequest">HTTP通信リクエストオブジェクト</param>
///<param name="contentStream">[OUT]HTTP応答のボディストリームのコピー先</param>
///<param name="headerInfo">[IN/OUT]HTTP応答のヘッダ情報。ヘッダ名をキーにして空データのコレクションを渡すことで、該当ヘッダの値をデータに設定して戻す</param>
///<returns>HTTP応答のステータスコード</returns>
protected HttpStatusCode GetResponse(HttpWebRequest webRequest,
Stream contentStream,
Dictionary<string, string> headerInfo)
{
try
{
using (HttpWebResponse webRes = (HttpWebResponse)webRequest.GetResponse())
{
HttpStatusCode statusCode = webRes.StatusCode;
//cookie保持
if (this.UseCookie) this.FixCookies(webRes.Cookies);
//リダイレクト応答の場合は、リダイレクト先を設定
GetHeaderInfo(webRes, headerInfo);
//応答のストリームをコピーして戻す
if (webRes.ContentLength > 0)
{
//gzipなら応答ストリームの内容は伸張済み。それ以外なら伸張する。
if (webRes.ContentEncoding == "gzip" || webRes.ContentEncoding == "deflate")
{
using (Stream stream = webRes.GetResponseStream())
{
stream?.CopyTo(contentStream);
}
}
else
{
using (Stream stream = new GZipStream(webRes.GetResponseStream(), CompressionMode.Decompress))
{
stream?.CopyTo(contentStream);
}
}
}
return statusCode;
}
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
HttpWebResponse res = (HttpWebResponse)ex.Response;
GetHeaderInfo(res, headerInfo);
return res.StatusCode;
}
throw;
}
}