Descarregamento de ficheiros DownloadTo

JumpKick.HttpLib — Download de ficheiros DownloadTo

Explicação

Utilize .DownloadTo(caminhoDeGuardar, ...) para descarregar e guardar recursos da rede diretamente no disco local, normalmente usado em conjunto com Http.Get().
Parâmetros de callback:

  1. onProgressChanged:(bytesCopied, totalBytes?)
    • bytesCopied:Número de bytes já descarregados
    • totalBytes:Total de bytes do ficheiro, tipo anulável (long?)
      Se o servidor não devolver o cabeçalho de resposta Content‑Length, totalBytes.HasValue == false. Não é possível calcular a percentagem de descarregamento, apenas se conseguem mostrar os bytes já recebidos.
  2. onSuccess:(headers)
    Callback executado quando o descarregamento termina, permite aceder aos dados dos cabeçalhos de resposta.

Exemplos

Com callback de progresso e conclusão

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 força cálculo de vírgula flutuante para evitar divisão inteira igual a zero
                    double progress = (bytesCopied / totalBytes.Value * 1.0d) * 100;
                    Console.WriteLine($"Progresso do descarregamento:{progress:F2} %");
                }
                Console.WriteLine($"Bytes já descarregados:{bytesCopied} bytes");
            },
            onSuccess: (headers) =>
            {
                Console.WriteLine("\nDescarregamento do ficheiro concluído");
            }
        )
        .OnFail(ex =>
        {
            Console.WriteLine("Erro no descarregamento:" + ex.Message);
        })
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

Exemplo‑Descarregamento mínimo

Sem acompanhamento de progresso

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("Descarregamento terminado");
            })
        .OnFail(ex => Console.WriteLine(ex.Message))
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

Teste de exceções

Indique um endereço de recurso inexistente para capturar o erro 404

using System;
using JumpKick.HttpLib;

class Program
{
    static void Main(string[] args)
    {
        // Ligação inválida, provoca erro 404
        Http.Get("https://httpbin.org/notfoundfile")
        .DownloadTo(@"E:\error.png",
            onProgressChanged: (bytesCopied, totalBytes) =>
            {
                Console.WriteLine($"Já descarregado:{bytesCopied} bytes");
            },
            onSuccess: headers =>
            {
                Console.WriteLine("Descarregamento terminado");
            })
        .OnFail(ex =>
        {
            Console.WriteLine("Exceção capturada:" + ex.Message);
        })
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

Resumo

FuncionalidadeAPIMétodo principal
Pedido GETHttp.Get(url)Consultas básicas, descarregamento de ficheiros .DownloadTo()
POST de formulárioHttp.Post(url).Form() pares chave‑valor do formulário
POST JSONHttp.Post(url).Body(cadeiaDeCaracteres,tipoDeMultimédia)
Envio de ficheiroHttp.Post(url).Upload() + NamedFileStream

Descarregamento de ficheiros DownloadTo

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *