Show / Hide Table of Contents

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 null, shows standard progress dialog.

cancel  (CancellationToken)

Can be used to cancel.

disposeStream  (bool)

Call stream.Dispose();.

Returns
Task<bool>

false if canceled.

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 null, shows standard progress dialog.

cancel  (CancellationToken)

Can be used to cancel.

Returns
Task<bool>

false if canceled.

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;