在Matlab中使用Curl(Windows 10)进行的请求会给出错误消息

时间:2019-01-03 21:42:49

标签: matlab curl

我正在向服务器发送curl命令,但收到一条我不理解的错误消息。

我需要发送到服务器的请求是

body=$(cat << EOF
{
  "order": {
    "units": "100",
    "instrument": "EUR_USD",
    "timeInForce": "FOK",
    "type": "MARKET",
    "positionFill": "DEFAULT"
  }
}
EOF
)

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TOKEN>" \
  -d "$body" \
  "https://api-fxtrade.oanda.com/v3/accounts/<ACCOUNT>/orders"

我要做的是将其转换为curl命令:

curlcmd ='curl -s \ -X POST \ -H“内容类型:application / json” \ -H“授权:承载” \ -d“ {” order“:{” units“:” 100“ ,“工具”:“ EUR_USD”,“ timeInForce”:“ FOK”,“类型”:“ MARKET”,“ positionFill”:“ DEFAULT”}}” \“ https://api-fxpractice.oanda.com/v3/accounts/AccountID/orders”'

我通过Matlab通过resp = system(curlcmd)将命令发送到服务器。我收到的错误消息是:

errorMessage:'无效的JSON,ParseErrorCode:4,消息:缺少对象成员的名称。'

任何想法都意味着什么,我该如何解决?我在Windows 10上使用Matlab,因此curl是Windows 10的一部分。

响应应该是下订单和交易的响应数据。

1 个答案:

答案 0 :(得分:1)

似乎没有正确引用JSON。

尝试一下:

curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer " -d "{\"order\": {\"units\": \"100\", \"instrument\": \"EUR_USD\", \"timeInForce\": \"FOK\", \"type\": \"MARKET\", \"positionFill\": \"DEFAULT\" }}" "https://api-fxpractice.oanda.com/v3/accounts/AccountID/orders" 

使用代理进行测试

使用适当的JSON引号转义符,如上面的CURL命令行所示,在HTTPS代理中查看JSON时看起来是正确的:

proxy output