Method ExtInternet.DownloadAsync(+ 1 overload)
Overload
The async version of ExtInternet.Download.
public static Task<bool> DownloadAsync(this HttpResponseMessage t, Stream stream, Action<ProgressArgs> progress = null, CancellationToken cancel = default, bool disposeStream = false)
Parameters
t (HttpResponseMessage) |
stream (Stream)
Writes to this stream. |
progress (Action<ProgressArgs>)
Calls this callback function to report the progress. If |
cancel (CancellationToken)
Can be used to cancel. |
disposeStream (bool)
Call |
Returns
Exceptions
HttpRequestException
Failed HTTP request. |
Exception
Other exceptions. |
Remarks
By default HttpClient and similar functions download content to a memory buffer before returning. To avoid it, use completionOptionSystem.Net.Http.HttpCompletionOption.ResponseHeadersRead, or ExtInternet.Get with dontWaittrue
. Then call this function (it will download the file), and finally dispose the HttpResponseMessage.
Cannot provide the progress percentage if the content length is unknown. Top reasons:
- The HTTP server uses chunked transfer encoding.
- The HTTP server uses content compression and the HttpClient is configured to automatically decompress (for example internet.http). Instead of internet.http create a HttpClient and optionally set header
"Accept-Encoding: br, gzip, deflate"
. This function will decompress.
Overload(top)
The async version of ExtInternet.Download.
public static Task<bool> DownloadAsync(this HttpResponseMessage t, string file, Action<ProgressArgs> progress = null, CancellationToken cancel = default)
Parameters
t (HttpResponseMessage) |
file (string)
File path. The function uses pathname.normalize. Creates parent directory if need. |
progress (Action<ProgressArgs>)
Calls this callback function to report the progress. If |
cancel (CancellationToken)
Can be used to cancel. |
Returns
Exceptions
HttpRequestException
Failed HTTP request. |
Exception
Other exceptions. |
Remarks
By default HttpClient and similar functions download content to a memory buffer before returning. To avoid it, use completionOptionSystem.Net.Http.HttpCompletionOption.ResponseHeadersRead, or ExtInternet.Get with dontWaittrue
. Then call this function (it will download the file), and finally dispose the HttpResponseMessage.
Cannot provide the progress percentage if the content length is unknown. Top reasons:
- The HTTP server uses chunked transfer encoding.
- The HTTP server uses content compression and the HttpClient is configured to automatically decompress (for example internet.http). Instead of internet.http create a HttpClient and optionally set header
"Accept-Encoding: br, gzip, deflate"
. This function will decompress.
Examples
if (!internet.http.Get(url, true).Download(zip)) return;