curl 发送 GET 请求需手动 URL 编码特殊字符,推荐用 -G 与 --data-urlencode;POST 提交 JSON 必须设 Content-Type: application/json 且 body 为合法 JSON;调试用 -v 查看请求响应,-L 跟重定向,--max-time 控制超时,-k 临时跳过证书验证。

curl 发送 GET 请求时如何带查询参数和请求头
直接拼接 URL 是最常见做法,但要注意 URL 编码问题;curl 不会自动编码空格、中文等字符,手动用 urlencode 或改用 --data-urlencode 更稳妥。
加请求头统一用 -H,多个头可重复使用;Content-Type 不是必须的,GET 请求一般不带 body,所以多数情况下不用设。
-
curl "https://api.example.com/users?id=123&name=test"(简单参数,无特殊字符可用) -
curl -G "https://api.example.com/users" --data-urlencode "name=张三" --data-urlencode "tag=web dev"(-G表示把 data 转为 query string,自动编码) curl -H "Authorization: Bearer abc123" -H "Accept: application/json" "https://api.example.com/me"
POST 提交 JSON 数据时为什么老是 400 或 415
两个关键点:必须显式声明 Content-Type: application/json,且 body 必须是合法 JSON 字符串——引号要双引号、不能有尾逗号、布尔值不能写成小写 true 以外的形式。
用 -d 传原始字符串最直接,但注意 shell 中单引号包裹可避免变量展开和转义干扰;如果 JSON 太长,建议用 @file.json 方式读取文件。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
curl -X POST -H "Content-Type: application/json" -d '{"username":"alice","active":true}' https://api.example.com/userscurl -X POST -H "Content-Type: application/json" -d @./payload.json https://api.example.com/users- 错误示例:
-d "{username: 'alice'}"(key 没双引号、字符串用单引号 → 解析失败)
调试时如何查看完整请求与响应细节
用 -v(verbose)能看到完整的 HTTP 请求行、所有请求头、响应状态行、响应头,以及响应 body 的开头部分;但它默认截断大响应体,加 --include 可强制显示响应头+完整 body,加 --output /dev/stdout 防止被重定向吞掉内容。
注意 -v 输出里请求体是看不到的(除非用 --trace-ascii),真正想确认发了什么 body,建议先用 echo 或 cat 看原始 payload,再发请求。
curl -v -X POST -H "Content-Type: application/json" -d '{"x":1}' https://httpbin.org/post-
curl -v --include https://httpbin.org/status/404(同时看 header 和 body) -
curl --trace-ascii /dev/stdout -d "a=1&b=2" https://httpbin.org/post(显示原始二进制级请求流,含 body)
处理重定向、超时和证书验证失败
默认 curl 不跟随 3xx 重定向,加 -L 才会跳;超时分连接超时(--connect-timeout)和总超时(--max-time),后者更常用;HTTPS 报 SSL certificate problem 通常是因为服务端用了自签名证书或系统 CA 未更新,临时调试可加 -k 跳过验证,但生产环境绝不能用。
-
curl -L https://httpbin.org/redirect/3(最多跟随 50 次,默认上限) -
curl --max-time 10 https://slow-api.example.com(10 秒内没完成就退出) -
curl -k https://self-signed.badssl.com(仅调试,忽略证书错误) - 长期解决证书问题:更新系统 CA 包(如 Ubuntu 的
ca-certificates),或指定私有 CA 路径:--cacert ./my-ca.pem
application/json;charset=utf-8,而你只写了 application/json,某些框架会直接拒收。

















