Java运行curl命令在Windows和Linux之间是不同的

Java运行curl命令在Windows和Linux之间是不同的,java,linux,windows,curl,Java,Linux,Windows,Curl,我使用SpringBoot编写了一个api服务器,运行在192.168.24.102:7000上,它接受RESTfulAPI来创建应用程序。这是我遇到的问题,甚至我最终解决了它,但我不明白为什么 当curl命令在Linux上运行时,它是成功的,如下所示: curl-X POST-H内容类型:application/json-k-d{\ip\:\192.168.24.102\,\appType\:5\appName\:\efg\} 在Windows cmd上运行curl命令时,也会成功,如下所示:

我使用SpringBoot编写了一个api服务器,运行在192.168.24.102:7000上,它接受RESTfulAPI来创建应用程序。这是我遇到的问题,甚至我最终解决了它,但我不明白为什么

当curl命令在Linux上运行时,它是成功的,如下所示:

curl-X POST-H内容类型:application/json-k-d{\ip\:\192.168.24.102\,\appType\:5\appName\:\efg\}

在Windows cmd上运行curl命令时,也会成功,如下所示:

因此curl命令是正确的,然后我将其写入Java代码

导入java.io.BufferedReader; 导入java.io.IOException; 导入java.io.InputStreamReader; 公共类测试演示{ 公共静态字符串exeCurlString[]cmds{ ProcessBuilder进程=新的ProcessBuildercmds; 过程p; 试一试{ p=进程启动; BufferedReader reader=新BufferedReadernew InputStreamReaderp.getInputStream; StringBuilder sb=新的StringBuilder; 字符串行=null; 而line=reader.readLine!=null{ 某人的电话线; sb.appendSystem.getPropertyline.separator; } 使某人恢复原状; }捕捉异常{ e、 打印跟踪; } 返回null; } 公共静态无效字符串[]args{ 字符串[]cmd={curl, https://192.168.24.102:7000/app/registerbyip,-k,-H, 内容类型:application/json;字符集=UTF-8, -十、 邮政,, -d、 {\ip\:\192.168.24.102\,\appType\:5\appName\:\efg\}; System.out.printlnexeCurlcmd; } } 当此java代码在windows上运行时,服务器将报告如下异常:

{时间戳:2019-11-15T02:09:33.261+0000,状态:400,错误:请求不正确,消息:JSON解析错误:意外字符“i”代码105:应以双引号开始字段名;嵌套异常为com.fasterxml.jackson.core.JsonParseException:意外字符“i”代码105:应以双引号开始字段名\n[来源:PushbackInputStream;行:1,列:3],路径:/app/registerByp}

但是我将java.class文件复制到linux,运行它将会成功。 为什么?同样的代码在Windows上运行会失败,但在linux上会成功

最后,我修复了如下java curl代码:

字符串[]cmd={curl, https://192.168.24.102:7000/app/registerbyip,-k,-H, 内容类型:application/json;字符集=UTF-8, -十、 邮政,, -d、 {\\ip\\:\\192.168.24.102\\,\\appType\\:5,\\appName\\:\\efg\\}; 然后添加另一个\将是成功的,但当在Linux上运行时,此java代码将失败


这是我的问题?为什么会发生?为什么java代码应该添加另一个符号?请帮助,非常感谢。

这是因为客户端curl在不同的平台上执行不同的操作

在windows上,参数curl-d内容和字符串内容如下所示:

{\"a\":\"123\"}  (in java "{\\\"a\\\" : \\\"123\\\"}")

客户端curl可以将其视为{a:123}

在linux或mac上,-d内容如下所示:
{a:123 },卷曲将其视为{a:123 }。.

不要发布代码、数据、错误消息等的图像。-将文本复制或键入问题。@TomMinor我提供了链接。我建议您也阅读规则。请显示代码和/或说明错误。请不要使用图像链接。问题中缺少文本。图片上的文本太小,一些人无法阅读。搜索引擎无法为将来的访问者索引图像上的文本。另请参阅@TomMinor。对于某些国家/地区,由于网络限制,无法访问图像。
{""a"":""123""}  (in java "{\"\"a\"\" : \"\"123\"\"}")