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 completionOption System.Net.Http.HttpCompletionOption.ResponseHeadersRead, or ExtInternet.Get with dontWait true. 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 completionOption System.Net.Http.HttpCompletionOption.ResponseHeadersRead, or ExtInternet.Get with dontWait true. 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;