如果你喜欢 HttpLib 项目,请为本项点亮一颗星 ⭐!
- .NET 6.0及以上。
- .NET Core3.1及以上。
- .NET Standard2.0及以上。
既可以上传文件等二进制数据,也可以上传表单键值对
上传与下载的进度监控
类似图片加载场景,同一个id的图片通过磁盘存储减少网络开支
Http.Get("https://www.baidu.com")Http.Post("https://www.baidu.com")Http.Put("https://www.baidu.com")Http.Delete("https://www.baidu.com")GET请求参数会自动注入到地址
data("wd", "随便搜一下")
data(new { test1 = "测试1", test2 = "测试2" })
data(new { params_ = "关键字参数" })
data(new { wd = new string[] { "GitHub - Haku-Men HttpLib", "POST数组参数" } })URL参数(除了GET请求)
query("键", "值对")
query(new { test = "POST下继续传递URL参数" })data(new Val("test1", "测试1"), new Val("test2", "测试2"))data(new List<Val> {
new Val("test1","测试1"),
new Val("test2","测试2")
})上传字符串 默认
text/plain
string json = "{\"JSON\":\"json data\"}";
datastr(json, "application/json")上传文件
data(new Files("文件地址"))file(@"文件地址")header("Authorization", "abc")header(new { accept = "*/*", userAgent = "Chrome" })header(new Val("accept","*/*"), new Val("user-agent","Chrome"))proxy("127.0.0.1",1000)默认禁止
redirect()
毫秒(默认不超时)
timeout(3000)默认
utf-8
encoding('utf-8')先配置
Config.CacheFolder缓存文件夹
cache("缓存id")或者设定有效期 1分钟
cache("缓存id",1)before((HttpWebResponse response, ResultResponse result) =>
{
return true; //继续请求
})字节大小
requestProgres((bytesSent, totalBytes) => {
double prog = (bytesSent * 1.0) / (totalBytes * 1.0);
Console.Write("{0}% 上传", Math.Round(prog * 100.0, 1).ToString("N1"));
})responseProgres((bytesSent, totalBytes) => {
if (totalBytes > 0)
{
double prog = (bytesSent * 1.0) / (totalBytes * 1.0);
Console.Write("{0}% 下载", Math.Round(prog * 100.0, 1).ToString("N1"));
}
})fail((ResultResponse result) => {
})requestNone();//不下载流
request();//返回字符串
requestData();//返回字节
download("保存目录", "保存文件名称(为空自动获取)");//下载文件string result = Http.Get("https://www.baidu.com/s")
.data(new { wd = "GitHub - Haku-Men HttpLib", params_ = "关键字参数" })
.redirect()
.request();
Console.Write(result);var savapath = Http.Get("https://dldir1.qq.com/qqfile/qq/QQNT/Windows/QQ_9.9.9_240422_x64_01.exe")
.redirect()
.responseProgres((bytesSent, totalBytes) =>
{
Console.SetCursorPosition(0, 0);
if (totalBytes > 0)
{
double prog = (bytesSent * 1.0) / (totalBytes * 1.0);
Console.Write("{0}% 下载 {1}/{2} ", Math.Round(prog * 100.0, 1).ToString("N1"), CountSize(bytesSent), CountSize(totalBytes));
}
else
{
Console.Write("{0} 下载 ", CountSize(bytesSent));
}
}).download(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "qq.exe");
if (savapath != null) Console.WriteLine("下载成功保存至:" + savapath);
else Console.WriteLine("下载失败");Http.Get("https://test.chatgpt.com/local_doc_chat").request(msg =>
{
if (msg == null) return;
if (msg.StartsWith("data: ")) msg = msg.Substring(5).Trim();
System.Diagnostics.Debug.WriteLine(msg);
});Http.Get("https://www.baidu.com").IPConfig.fail += (HttpCore core, ResultResponse result)=>
{
if (result.Exception == null) return;
Console.Write(err.GetType());
Console.Write(err.Message);
};| 代码 | 类型 | 解释 | 说明 |
|---|---|---|---|
| StatusCode | int | 状态代码 | 200 为正常 常见的有404未找到、302重定向、502网址报错 |
| IsSuccessStatusCode | bool | 响应是否成功 | range 200-299 |
| ServerHeader | string? |
服务头 | HTTP 200 OK BWS/1.1 Ver:1.1 |
| Uri | Uri | 最终的地址 | |
| Type | string? |
服务指示类型 | Content-Type |
| Header | Dictionary<string, string> | 响应头 | |
| Cookie | Dictionary<string, string> | Cookie | |
| OriginalSize | long | 流原始大小 | 动态压缩 |
| Size | long | 流大小 | |
| Exception | Exception? |
异常信息 |