我首先与Postman
一起测试一个api
以执行简单的POST
请求,并且一切正常,因为在主体部分添加值很容易。
现在,我需要从Linux控制台执行相同的操作。我尝试使用curl
命令。
curl -X POST -H "Content-Type: application/json" -d'{"DeviceId":"L","TransactionValue":"360","RSSI":"360","Time":"2018-07-30T11:02:00"}' https://IPADDRESS.com.au
基于卷曲的其他命令,但是每次我在Linux控制台上显示此error log
时:
(35) ssl_handshake returned - PolarSSL: (-0x7780) SSL - A fatal alert message was received from our peer
我不明白为什么我在Linux控制台上而不是Postman上有问题,这是什么问题。
非常感谢。 干杯!
答案 0 :(得分:0)
您的命令是正确的,问题可能出在您具有过时的curl / PolarSSL版本,因为它似乎可以与邮递员一起使用。
以下是使用curl 7.61.0
发布到httpbin.org的示例:
$ curl -X POST https://httpbin.org/post -H "Content-type: application/json" -d '{"DeviceId":"L","TransactionValue":"360","RSSI":"360","Time":"2018-07-30T11:02:00"}'
{
"args": {},
"data": "{\"DeviceId\":\"L\",\"TransactionValue\":\"360\",\"RSSI\":\"360\",\"Time\":\"2018-07-30T11:02:00\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Connection": "close",
"Content-Length": "83",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.43.0"
},
"json": {
"DeviceId": "L",
"RSSI": "360",
"Time": "2018-07-30T11:02:00",
"TransactionValue": "360"
},
"origin": "178.197.231.122",
"url": "https://httpbin.org/post"
}
如果前面的示例可行,请尝试设置主机,例如:
$ curl -X POST https://IPADDRESS.com.au \
-H "Host: httpbin.org" \
-H "Content-type: application/json" \
-d '{"DeviceId":"L","TransactionValue":"360","RSSI":"360","Time":"2018-07-30T11:02:00"}'
请注意,-H "Host: httpbin.org"
用您自己的域替换。
答案 1 :(得分:0)
问题几乎可以肯定是后端ssl库,在您的情况下是PolarSSL / mbedTLS,看来您的版本是2014年或更早的版本。
您正在使用哪个版本的PolarSSL?您可以通过运行curl --version
来查找结果,它输出什么?
尝试更新到最新版本的MbedTLS并重新编译curl,然后重试,您可以在此处找到最新版本:https://tls.mbed.org/tech-updates/releases
(顺便说一句,似乎PolarSSL和mbedTLS指的是同一件事,他们只是在2015年更改了名称。错误消息将其称为PolarSSL的事实意味着您使用的是2014年以来的旧版本或以上)