JSON cUrl 而非 Wget 抛出格式错误?
JSON format error thrown by cUrl but not Wget?
我正在 Windows 上通过批处理脚本发送 POST 请求。我手动安装了 wget 并且一切正常,但我想使用 cUrl,因为它最近成为 Windows 10 标准功能并且可以在其他较新的计算机上 运行。问题是 cUrl 抛出 Json 格式错误,尽管似乎没有任何特殊字符异常。
我试过将引号改为撇号,反之亦然,并使用反斜杠和脱字符作为转义字符。这个 wget 脚本有效:
wget --quiet ^
--method POST ^
--header 'content-type: application/json' ^
--body-data '{"method":"passthrough", "params": {"deviceId": "[MyId]", "requestData": "{\"system\":{\"set_relay_state\":{\"state\":0}}}" }}' ^
--output-document ^
- 'https://eu-wap.tplinkcloud.com/?token=[MyToken]'
然而,在 cUrl 中完全相同的 JSON 被拒绝:
curl -X POST -H 'content-type:application/json' -d '{"method":"passthrough","params":{"deviceId":"[MyId]","requestData":"{\"system\":{\"set_relay_state\":{\"state\":0}}}"}}' https://wap.tplinkcloud.com?token=[MyToken]
感谢任何建议。
- 您正在 Windows.
的命令行上 Windows 10 使用 curl (C:\Windows\System32\curl.exe
)
如果我的理解是正确的,这个修改怎么样?
修改了 Windows 的 curl 命令:
curl -H "content-type:application/json" -d "{\"method\":\"passthrough\",\"params\":{\"deviceId\":\"[MyId]\",\"requestData\":\"{\\"system\\":{\\"set_relay_state\\":{\\"state\\":0}}}\"}}" https://eu-wap.tplinkcloud.com/?token=[MyToken]
- 在Windows命令行,请使用双引号而不是单引号。
- 在JSON对象,请转义每个双引号。
注:
- 我不确定您的回复 URL 是否正确。所以上面测试的时候请使用正确的URL
我还在 windows 上使用 Curl,但一直出现 JSON 错误,
我切换了单引号和双引号,效果很好
curl -H "Content-Type:application/json" -H "Authorization:Bearer <token>" -d "{'fileid':'<fileid>','printerid':'<printerid>','type':'pdf'}" "https://printapi.ezeep.com/sfapi/Print"
我正在 Windows 上通过批处理脚本发送 POST 请求。我手动安装了 wget 并且一切正常,但我想使用 cUrl,因为它最近成为 Windows 10 标准功能并且可以在其他较新的计算机上 运行。问题是 cUrl 抛出 Json 格式错误,尽管似乎没有任何特殊字符异常。
我试过将引号改为撇号,反之亦然,并使用反斜杠和脱字符作为转义字符。这个 wget 脚本有效:
wget --quiet ^
--method POST ^
--header 'content-type: application/json' ^
--body-data '{"method":"passthrough", "params": {"deviceId": "[MyId]", "requestData": "{\"system\":{\"set_relay_state\":{\"state\":0}}}" }}' ^
--output-document ^
- 'https://eu-wap.tplinkcloud.com/?token=[MyToken]'
然而,在 cUrl 中完全相同的 JSON 被拒绝:
curl -X POST -H 'content-type:application/json' -d '{"method":"passthrough","params":{"deviceId":"[MyId]","requestData":"{\"system\":{\"set_relay_state\":{\"state\":0}}}"}}' https://wap.tplinkcloud.com?token=[MyToken]
感谢任何建议。
- 您正在 Windows. 的命令行上 Windows 10 使用 curl (
C:\Windows\System32\curl.exe
)
如果我的理解是正确的,这个修改怎么样?
修改了 Windows 的 curl 命令:
curl -H "content-type:application/json" -d "{\"method\":\"passthrough\",\"params\":{\"deviceId\":\"[MyId]\",\"requestData\":\"{\\"system\\":{\\"set_relay_state\\":{\\"state\\":0}}}\"}}" https://eu-wap.tplinkcloud.com/?token=[MyToken]
- 在Windows命令行,请使用双引号而不是单引号。
- 在JSON对象,请转义每个双引号。
注:
- 我不确定您的回复 URL 是否正确。所以上面测试的时候请使用正确的URL
我还在 windows 上使用 Curl,但一直出现 JSON 错误, 我切换了单引号和双引号,效果很好
curl -H "Content-Type:application/json" -H "Authorization:Bearer <token>" -d "{'fileid':'<fileid>','printerid':'<printerid>','type':'pdf'}" "https://printapi.ezeep.com/sfapi/Print"