当前位置: 首页 > news >正文

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数据

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【现代通信技术】走进现代通信系统架构
  • 海康相机二次开发学习笔记1-环境配置
  • 【2024】k8s集群 图文详细 部署安装使用(两万字)
  • Oracle笔记
  • 二叉树详解(1)
  • 【hexo博客问题】
  • 跨境电商测评网络:美国住宅IP的获取与使用
  • Golang 与 Java:编程语言比较及如何选择
  • 2024.8.15(python管理mysql、Mycat实现读写分离)
  • 【SpringCloud】RabbitMQ——五种方式实现发送和接收消息
  • Java后端面试题(redis相关2)(day8)
  • Linux---系统安全
  • 【博主推荐】HTML5新闻,博客,官网网站源码文章瀑布流+详情页面
  • Kotlin IntelliJ IDEA 环境搭建
  • Unity | AmplifyShaderEditor插件基础(第二集:模版说明)
  • Android系统模拟器绘制实现概述
  • classpath对获取配置文件的影响
  • Django 博客开发教程 16 - 统计文章阅读量
  • Javascript弹出层-初探
  • Puppeteer:浏览器控制器
  • Shadow DOM 内部构造及如何构建独立组件
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 区块链分支循环
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 小程序开发中的那些坑
  • 学习笔记TF060:图像语音结合,看图说话
  • Java性能优化之JVM GC(垃圾回收机制)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #HarmonyOS:Web组件的使用
  • #include<初见C语言之指针(5)>
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #在 README.md 中生成项目目录结构
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (四) 虚拟摄像头vivi体验
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (原)本想说脏话,奈何已放下
  • (转) ns2/nam与nam实现相关的文件
  • (转)LINQ之路
  • .env.development、.env.production、.env.staging
  • .NET 8.0 发布到 IIS
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .Net FrameWork总结
  • .Net MVC4 上传大文件,并保存表单
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net 执行Linux下多行shell命令方法
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态