JumpKick.HttpLib — ファイルダウンロード DownloadTo
説明
.DownloadTo(保存先パス, ...) を使い、ネットワーク上のリソースを直接ローカルディスクへ保存します。通常は Http.Get() と組み合わせて使用します。
コールバック引数:
onProgressChanged:(bytesCopied, totalBytes?)bytesCopied:既にダウンロードしたバイト数totalBytes:ファイル全体のバイト数、null許容型(long?)
サーバーがContent‑Lengthレスポンスヘッダーを返さない場合、totalBytes.HasValue == falseとなり進捗率を計算できません。取得済みバイト数のみ出力可能です。
onSuccess:(headers)
ダウンロード完了時のコールバック。レスポンスヘッダーを取得できます。
サンプル
進捗と完了コールバック付き
using System;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
string url = "https://codelexample.test/file.zip";
string savePath = @"E:\httplib.zip";
Http.Get(url)
.DownloadTo(
savePath,
onProgressChanged: (bytesCopied, totalBytes) =>
{
if (totalBytes.HasValue)
{
// *1.0d で浮動小数点演算に切り替え、整数除算が0になるのを防ぐ
double progress = (bytesCopied / totalBytes.Value * 1.0d) * 100;
Console.WriteLine($"ダウンロード進捗:{progress:F2} %");
}
Console.WriteLine($"ダウンロード済みバイト:{bytesCopied} bytes");
},
onSuccess: (headers) =>
{
Console.WriteLine("\nファイルダウンロード完了");
}
)
.OnFail(ex =>
{
Console.WriteLine("ダウンロードエラー:" + ex.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
サンプル‑最小構成ダウンロード
進捗監視なし
using System;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
Http.Get("https://httpbin.org/image/png")
.DownloadTo(@"E:\test.png",
onSuccess: headers =>
{
Console.WriteLine("ダウンロード完了");
})
.OnFail(ex => Console.WriteLine(ex.Message))
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
例外テスト
存在しないリソースURLを指定し、404エラーをキャッチ
using System;
using JumpKick.HttpLib;
class Program
{
static void Main(string[] args)
{
// 無効URL、404が発生
Http.Get("https://httpbin.org/notfoundfile")
.DownloadTo(@"E:\error.png",
onProgressChanged: (bytesCopied, totalBytes) =>
{
Console.WriteLine($"ダウンロード済み:{bytesCopied} bytes");
},
onSuccess: headers =>
{
Console.WriteLine("ダウンロード完了");
})
.OnFail(ex =>
{
Console.WriteLine("例外捕捉:" + ex.Message);
})
.Go();
Console.ReadKey();
}
}Code language: JavaScript (javascript)
まとめ
| 機能 | API | 主要メソッド |
|---|---|---|
| GETリクエスト | Http.Get(url) | 基本クエリ、ファイルダウンロード .DownloadTo() |
| POSTフォーム | Http.Post(url) | .Form() フォームキーバリュー |
| POST JSON | Http.Post(url) | .Body(文字列,メディアタイプ) |
| ファイルアップロード | Http.Post(url) | .Upload() + NamedFileStream |
ファイルダウンロード DownloadTo
Previous: ファイルアップロード Upload