Windows 11下Git Bash执行cURL脚本400问题、CMD/PowerShell不能执行多行文本等问题记录及解决方案

news2025/3/11 5:14:13

问题

在Postman里可成功执行的POST请求:
在这里插入图片描述
找到Postman的Code
在这里插入图片描述
因为cURL基本上算是行业标准,所以Postman默认选中cURL,支持切换不同的开发语言:
在这里插入图片描述
点击上图右上角的复制按钮,得到cURL脚本。

Windows 11家庭版,打开Git Bash客户端,版本为:
git version 2.47.1.windows.1
在这里插入图片描述
执行上述cURL脚本异常:
在这里插入图片描述
报错信息:

{"code":400,"msg":"JSON parse error: Invalid UTF-8 start byte 0xb4; nested exception is com.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 start byte 0xb4\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 3, column: 18]"}

分析

根据上面几行简短的报错信息,提取几个关键内容:

  • code=400:表明这是客户端异常,此处的客户端是Git Bash;
  • JsonParseException和StreamUtils:表明服务端确实有接收到客户端提交的请求,要不然客户端也无法得知Jackson框架里的类JsonParseException,当然也无法得知Spring框架里的StreamUtils工具类;
  • 报错原因是非法JSON:JSON parse error
  • 编码异常:Invalid UTF-8 start byte 0xb4

分析起来,看起来头头是道,怎么解决问题呢?

排查

遇到问题时,还是习惯性将问题抛给ChatGPT,结果这次是真的全程被ChatGPT的胡言乱语给糊弄,浪费不少时间。
在这里插入图片描述
一一尝试:

  • 很明确是小写双引号,不是大写双引号;
  • 将上述cURL脚本使用txt文件保存,并保存为不带BOM的格式,没有解决问题;
    在这里插入图片描述
  • 报错提示是第三行line: 3, column: 18,好像是min_score字段,去掉引号试试,还是报错:
    在这里插入图片描述
  • --data-binary还是报错:
    在这里插入图片描述

方法一

反复尝试+试错,浪费不少时间,ChatGPT终于给出一个可行的解决方案:
在这里插入图片描述
也就是在Git Bash执行的目录下,新增一个payload.json文件,内容就是POST请求的requestBody:

{
    "retriever_type": "TEXT",
    "question": "大模型技术如何帮助数据中心实现高效减碳?",
    "min_score": "0.2",
    "max_results": "10"
}

然后将命令:

--data '{
    "retriever_type": "TEXT",
    "question": "大模型技术如何帮助数据中心实现高效减碳?",
    "min_score": "0.2",
    "max_results": "10"
}'

修改为(其他部分不变):--data @payload.json

执行效果:
在这里插入图片描述

方法二

为了执行一个在Postman可以成功执行的cURL脚本,我需要另存为一个JSON文件,感觉非常反人类。于是继续追问ChatGPT,给出一个不使用文件的方法:

printf '%s' '{
  "retriever_type": "TEXT",
  "question": "大模型技术如何帮助数据中心实现高效减碳?",
  "min_score": "0.2",
  "max_results": "10"
}' | curl --location 'http://api.test.tesla.com/rag_online/rag/retrieval' \
  --header 'tesla-token: 1111222233334444' \
  --header 'Content-Type: application/json' \
  --data @-

和上面的解决方法非常类似。

GET

Git Bash客户端下执行cURL GET命令没有问题,只是在执行POST命令才有问题。
在这里插入图片描述

CMD/PowerShell

既然Git Bash客户端不能用,于是将注意力放在其他客户端。

打开cmd或PowerShell,粘帖cURL脚本,结果给我提示:您将粘贴包含多行的文本。如果将此文本粘贴到 shell 中,则可能会导致命令意外执行。是否继续?
在这里插入图片描述
如上图所示,CMD和PowerShell无法识别多行cURL脚本,会拆分成多行,当然会执行失败。

怎么解决?

ChatGPT又让我失望
在这里插入图片描述
在这里插入图片描述
并不能解决问题。

Google找到一篇类似的报错Jackson JSON parser invalid utf-8 start byte。

TODO:未解决。

Mac

上述cURL脚本在同事的Mac开发机上(使用的终端未知),可执行成功。

解决方案

Git Bash

如果是GET请求,直接可使用Git Bash。但是对于POST请求,如果坚持要使用Git Bash客户端,有两种方法:

  • 使用文件
curl --location 'http://api.test.tesla.com/rag_online/rag/retrieval' \
--header 'tesla-token: 1111222233334444' \
--header 'Content-Type: application/json' \
--data @payload.json
  • 使用管道符
printf '%s' '{
  "retriever_type": "TEXT",
  "question": "大模型技术如何帮助数据中心实现高效减碳?",
  "min_score": "0.2",
  "max_results": "10"
}' | curl --location 'http://api.test.tesla.com/rag_online/rag/retrieval' \
  --header 'ecmas-token: 1111222233334444' \
  --header 'Content-Type: application/json' \
  --data @-

在这里插入图片描述

Mac

Mac比Windows强,受开发者青睐,不是没有原因的。

WSL

Windows 8不知道什么时候开始支持WSL,另外貌似有不少问题,Windows 10/11好像也不是一开始就支持WSL的。

总而言之,如果可以的话,建议升级Windows版本,安装WSL,比CMD、PowerShell功能强大:
在这里插入图片描述
使用WSL可执行多行cURL脚本。当然,WSL是一个Ubuntu系统,默认自带cURL命令。

关于WSL,参考我写的另一篇Windows 10/11安装使用WSL。

参考

  • ChatGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)

研究背景 研究问题:如何准确预测旋转机械(如轴承)的剩余使用寿命(RUL),这对于设备可靠性和减少工业系统中的意外故障至关重要。研究难点:该问题的研究难点包括:训练和测试阶段数据分布不一致、长期RUL预测的泛化能力有限。相关工作:现有工作主要包括基于模型的方法、数…

记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)一、创建项目1.1 生成提示词1.2 生成代码 二、编译预览2.1 导入项目2.2 编译预览 三、发布3.1 在微信开发者工具进行上传3…

游戏引擎学习第146天

音高变化使得对齐读取变得不可能,我们可以支持循环声音了。 我们今天的目标是完成之前一段时间所做的音频代码。这个项目并不依赖任何引擎或库,而是一个教育项目,目的是展示从头到尾运行一个游戏所需要的全部代码。无论你对什么方面感兴趣&a…

Java 大视界 -- Java 大数据在智能体育赛事运动员表现分析与训练优化中的应用(122)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法(Power Iteration)幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法(Inverse Iteration)移位反幂法 3. QR 算法(QR Algorithm)——稠密矩阵理论推导编程…

SparkAi系统体验

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程 一、SparkAI是什么二、功能模块介绍系统快速体验 三、系统功能模块3.1 AI全模型支持/插件系统3.2 AI智能体应用3.3 AI专业绘画3.4 AI视频生成3.5 Dall-E2/E3/E4绘画3.6 智能思维导图生成3.7 AI绘画广…

视频录像机视频通道是指什么

视频录像机的视频通道是指摄像机在监控矩阵或硬盘录像机设备上的视频输入的物理位置。 与摄像头数量关系:在视频监控系统中,有多少个摄像头就需要多少路视频通道,通道数量决定了视频录像机可接入摄像头的数量,一般硬盘录像机有4路…

【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器

更新日期:2025年3月7日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中,文件夹锁定器能够为任何文件夹加…

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布!此次更新,Easysearch 增加了新的功能和数据类型,包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持,Console 新增了日志查询功能。 INFINI Easyse…

3.6c语言

#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <stdio.h> int main() {int sum 0,i,j;for (j 1; j < 1000; j){sum 0;for (i 1; i < j; i){if (j % i 0){sum i;} }if (sum j){printf("%d是完数\n", j);}}return 0; }#de…

Docker基础篇——Ubuntu下Docker安装

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档&#xff0c;如…

postman接口请求中的 Raw是什么

前言 在现代的网络开发中&#xff0c;API 的使用已经成为数据交换的核心方式之一。然而&#xff0c;在与 API 打交道时&#xff0c;关于如何发送请求体&#xff08;body&#xff09;内容类型的问题常常困扰着开发者们&#xff0c;尤其是“raw”和“json”这两个术语之间的区别…

最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)

前期所需&#xff1a; 1.apache-tomcat-10.1.18-windows-x64&#xff08;tomcat 10.1.8版本或者差不多新的版本都可以&#xff09; 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了&#xff08;一定先配置MAVEN再搞TOMCAT会事半功倍很多&#xff09; 如果有没配置…

【Linux学习笔记】Linux基本指令分析和权限的概念

【Linux学习笔记】Linux基本指令分析和权限的概念 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

Leetcode 刷题记录 05 —— 普通数组

本系列为笔者的 Leetcode 刷题记录&#xff0c;顺序为 Hot 100 题官方顺序&#xff0c;根据标签命名&#xff0c;记录笔者总结的做题思路&#xff0c;附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一&#xff1a;动态规划&#xff08;卡达尼算法&#xff09; 方法…

【LLM】kimi 1.5模型架构和训练流程

note 推出两个多模态模型&#xff0c;深度思考模型 long-CoT 对标 o1&#xff0c;通用模型 short-CoT 模型对标 gpt-4o。 文章目录 note一、kimi 1.5模型训练流程预训练SFT训练long-CoT SFTRL训练long2short 小结Reference 一、kimi 1.5模型训练流程 推出两个多模态模型&…

deepseek在pycharm中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm&#xff0c;如何接入deepseek是我们窥探ai代码编写的第一步&#xff0c;熟悉起来总没坏处。 1、官网安装pycharm社区版&#xff08;免费&#xff09;&#xff0c;如果需要安装专业版&#xff0c;需要另外找破解码。 2、安装Ollama…

Android15 Camera框架中的StatusTracker

StatusTracker介绍 StatusTracker是Android15 Camera框架中用来协调Camera3各组件之间状态转换的类。 StatusTracker线程名&#xff1a;std::string("C3Dev-") mId "-Status" Camera3 StatusTracker工作原理 StatusTracker实现批处理&#xff08;状态…

边缘计算盒子:解决交通拥堵的智能方案

在当今的智能交通系统中&#xff0c;边缘计算盒子&#xff08;Edge Computing Box&#xff09;正逐渐成为不可或缺的核心组件。这种设备通过将计算能力下沉到网络边缘&#xff0c;极大地提升了数据处理的速度和效率&#xff0c;特别适用于实时性要求极高的交通监控场景。本文将…

API调试工具的无解困境:白名单、动态IP与平台设计问题

引言 你是否曾经在开发中遇到过这样的尴尬情形&#xff1a;你打开了平台的API调试工具&#xff0c;准备一番操作&#xff0c;结果却发现根本无法连接到平台&#xff1f;别急&#xff0c;问题出在调试工具本身。今天我们要吐槽的就是那些神奇的开放平台API调试工具&#xff0c;…