在 Windows 系统中,处理 HTTP 请求主要有两种命令行工具:

curl:功能强大、灵活,是现代推荐使用的工具,它被内置于 Windows 10 (1803) 及更高版本中。bitsadmin:一个专门用于后台智能传输服务 的工具,特别适合下载大文件,因为它支持断点续传和低优先级网络占用。
下面我将详细介绍这两个工具,并提供大量实用的示例。
curl 命令 (现代首选)
curl 是一个强大的命令行工具和库,用于传输数据,它支持多种协议,其中最常用的就是 HTTP/HTTPS。
基本语法
curl [选项] [URL]
常用选项和示例
示例 1:最简单的 GET 请求
直接访问一个 URL,获取其内容并打印到控制台。
curl https://www.example.com
示例 2:将响应保存到文件
使用 -o 或 -O 选项将下载的内容保存为文件。

-
-o(小写):指定保存的文件名。curl -o my_page.html https://www.example.com
这会将
example.com的首页保存为当前目录下的my_page.html文件。 -
-O(大写):使用 URL 中的文件名作为保存名。curl -O https://www.example.com/images/logo.png
这会下载图片并保存为
logo.png。
(图片来源网络,侵删)
示例 3:发送 POST 请求
使用 -d 或 --data 选项发送 POST 请求的数据。
curl -X POST -d "username=myuser&password=mypass" https://example.com/login
-X POST:明确指定请求方法为 POST,虽然-d通常默认触发 POST,但显式声明更清晰。-d:指定要发送的数据。
示例 4:发送 JSON 格式的 POST 请求
在调用 API 时非常常见。
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john.doe@example.com"}' \
https://api.example.com/users
-H(小写):用于添加 HTTP 请求头。-H "Content-Type: application/json":告诉服务器我们发送的是 JSON 数据。
示例 5:添加自定义请求头
添加 Authorization 头来传递 Token。
curl -H "Authorization: Bearer YOUR_API_TOKEN_HERE" https://api.example.com/protected-data
示例 6:跟随重定向
默认情况下,curl 不会跟随 HTTP 3xx 重定向,使用 -L 选项可以启用此功能。
curl -L http://shorturl.example.com/redirects-to-somewhere
示例 7:静默模式
不显示进度信息,只输出结果,对于脚本处理非常有用。
curl -s https://www.example.com
示例 8:显示详细的请求/响应信息
使用 -v (verbose) 或 --trace 选项来查看完整的请求头、响应头和通信过程,这对于调试非常有帮助。
curl -v https://www.example.com
示例 9:指定请求超时
使用 --connect-timeout 和 -m (或 --max-time) 来设置连接和整个请求的超时时间(秒)。
# 连接超时设置为 5 秒 curl --connect-timeout 5 https://www.slow-server.com # 整个请求超时设置为 10 秒 curl -m 10 https://www.slow-server.com
示例 10:不验证 SSL 证书 (不安全,仅用于测试)
在测试自签名证书或本地 HTTPS 服务时,可以使用 -k 或 --insecure 来跳过证书验证。
curl -k https://self-signed-cert-server.com
curl 的优点:
- 功能全面,几乎支持所有 HTTP 功能。
- 语法简洁,易于学习和使用。
- 社区庞大,文档和示例丰富。
bitsadmin 命令 (专注文件下载)
bitsadmin 是一个 Windows 原生的命令行工具,用于创建和管理下载/上传任务,它的核心优势在于利用 BITS 服务,可以在后台稳定地下载文件,即使网络中断或系统重启,任务也能自动恢复。
基本语法
bitsadmin /transfer <JobName> <SourceURL> <DestinationPath>
常用选项和示例
示例 1:最简单的下载
创建一个名为 "MyDownloadJob" 的任务,从指定 URL 下载文件到 C:\downloads\ 目录。
bitsadmin /transfer MyDownloadJob https://www.example.com/largefile.zip C:\downloads\largefile.zip
示例 2:不显示命令行窗口
默认情况下,bitsadmin 会弹出一个命令行窗口显示进度,使用 /unattended 选项可以隐藏它。
bitsadmin /transfer /unattended MyDownloadJob https://www.example.com/largefile.zip C:\downloads\largefile.zip
示例 3:断点续传
bitsadmin 的最大优点就是内置断点续传功能,如果在下载过程中关闭命令行或重启电脑,下次只需用相同的命令重新运行,它会自动从上次中断的地方继续下载。
示例 4:监控下载进度
可以随时查看任务的当前状态。
bitsadmin /MyDownloadJob /progress
示例 5:列出所有 BITS 任务
查看当前系统上所有正在运行或已完成的 BITS 任务。
bitsadmin /list /allusers
示例 6:获取下载文件的校验和
下载完成后,可以计算文件的 MD5 或 SHA1 值来验证文件完整性。
# 计算文件的 MD5 certutil -hashfile C:\downloads\largefile.zip MD5 # 计算文件的 SHA1 certutil -hashfile C:\downloads\largefile.zip SHA1
bitsadmin 的优点:
- 极其稳定:利用 Windows 服务,下载任务可靠,不易中断。
- 网络友好:可以设置低优先级,不影响其他网络应用。
- 断点续传:默认支持,对大文件下载非常友好。
- 系统原生:无需安装任何额外软件。
bitsadmin 的缺点:
- 功能相对单一,主要用于文件下载。
- 语法比
curl稍显复杂。
总结与选择
| 特性 | curl |
bitsadmin |
|---|---|---|
| 主要用途 | 通用 HTTP/HTTPS 客户端 | 专注于后台文件下载 |
| 功能 | 强大 (GET, POST, PUT, DELETE, 自定义头, 认证等) | 较弱 (主要是下载) |
| 稳定性 | 依赖当前会话,会话结束任务停止 | 依赖 Windows 服务,稳定可靠,可后台运行 |
| 断点续传 | 不支持 (需手动实现或使用第三方工具) | 原生支持 |
| 易用性 | 语法简洁,上手快 | 语法稍复杂,需要记住任务名 |
| 安装要求 | Windows 10+ 内置,旧版需手动安装 | 所有 Windows 版本均内置 |
| 最佳场景 | API 测试、快速获取网页内容、发送各种 HTTP 请求 | 下载大文件、需要可靠下载、不干扰用户网络 |
如何选择?
- 如果你需要测试 API、与 Web 服务交互、发送 GET/POST 请求,或者只是快速下载一个网页:使用
curl,它是现代、灵活且功能齐全的首选。 - 如果你需要在脚本中下载一个可能很大的文件,并希望它能稳定完成,即使中途网络出问题也能恢复:使用
bitsadmin,它的可靠性和断点续传能力是curl无法比拟的。
希望这份详细的指南能帮助你更好地理解和使用 Windows 中的 HTTP 命令!
