如果你喜欢 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").IP
Config.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? |
异常信息 |