欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Windows下curl报错:curl: (3) unmatched close brace/bracket in URL position x

Windows下curl报错:curl: (3) unmatched close brace/bracket in URL position x

2024/10/25 23:22:59 来源:https://blog.csdn.net/u014390502/article/details/141183294  浏览:    关键词:Windows下curl报错:curl: (3) unmatched close brace/bracket in URL position x

问题

之前都是使用 postman 或 Apifox 测试接口,或者在 Linux 上使用 curl 命令测试接口,偶然在 windows 电脑上使用了 curl 命令测试接口,竟然报错 curl: (3) unmatched close brace/bracket in URL position x,如下图所示:

报错

一开始以为参数使用不当,后来反复对比下方的 curl 标准用法,并没有什么区别。

curl -X POST \-H "Content-Type: application/json" \-d '{"key": "value"}' \http://example.com/api/data

解释

  • -X POST: 指定请求方法为 POST。
  • -H "Content-Type: application/json": 设置请求头中的 Content-Type 为 application/json,这告诉服务器请求体中的数据是 JSON 格式。
  • -d '{"key": "value"}': 设置请求体数据为 JSON 字符串 { “key”: “value” }。

使用 --data-raw 或 -d
如果 JSON 数据中包含特殊字符,可能需要使用 --data-raw-d 选项来避免对数据进行 URL 编码,这是不必要的。

原因

查询一番后,发现在 Windows 的命令行(cmd),curl 命令的语法与 Linux/Unix 稍有不同,主要表现在对引号的处理上。Windows 命令行不支持单引号作为字符串的定界符,需要使用双引号代替。

例如,如果在 Linux 上使用如下的 curl 命令:

curl -X POST -H 'Content-Type: application/json' -d '{"key1":"value1", "key2":"value2"}' http://example.com/api

解决办法1

在 Windows 上,则需要将单引号换成双引号,Windows 中的双引号包裹的字符串如果本身包含双引号(如 JSON 中的键值对),则这些内嵌的双引号需要进行转义,使用反斜杠 \ 进行转义。

curl -X POST -H "Content-Type: application/json" -d "{\"key1\":\"value1\", \"key2\":\"value2\"}" http://example.com/api

转义

解决办法2

使用 Gitbash,支持 linux 命令语法:

gitbash

解决办法3

使用文件存储 json 数据,将 a 存入add-field.txt,在文件所在目录执行下列命令:

curl -X POST -H "Content-Type: application/json" --data-binary @add-field.txt http://localhost:5000/process_data

文件存储json数据

如果还有更好的方法,欢迎留言讨论~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com