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
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);
|
|
}
|
|
}
|
|
|