兼容win7版应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
2.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace AIK.Service.IService
{
public interface IHttpClientService
{
Task<HttpResponseMessage> GetWithTimeoutAsync(string url, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<HttpResponseMessage> PostWithTimeoutAsync(string url, HttpContent content, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<string> GetStringWithTimeoutAsync(string url, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<string> PostJsonWithTimeoutAsync(string url, string jsonData, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<byte[]> GetByteArrayWithTimeoutAsync(string url, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<string> GetStringWithTimeoutAndTokenAsync(string url, string token, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
Task<string> PostJsonWithTimeoutAndTokenAsync(string url, string jsonData, string token, TimeSpan? timeout = null, CancellationToken cancellationToken = default);
/// <summary>
/// 流式下载文件到指定路径。内部通过 BouncyCastleTlsHandler 的流式通道逐段读取,
/// 每段读取带空闲超时、无总时长限制,适合大文件下载。失败抛出异常(由调用方决定重试)。
/// 支持断点续传:传入 resumeOffset(已下载字节数)时自动携带 Range 头并从文件末尾追加写入。
/// </summary>
/// <param name="url">文件下载地址</param>
/// <param name="filePath">目标文件路径(不存在则创建;resumeOffset>0 时追加写入)</param>
/// <param name="progress">下载进度 0-100</param>
/// <param name="cancellationToken">取消令牌</param>
/// <param name="resumeOffset">已下载字节数(断点续传偏移,0 表示从头下载)</param>
Task DownloadToFileWithProgressAsync(string url, string filePath, IProgress<double> progress = null, CancellationToken cancellationToken = default, long resumeOffset = 0);
}
}