【问题标题】:Translating curl into Matlab/Webwrite将 curl 翻译成 Matlab/Webwrite
【发布时间】:2018-05-22 21:25:26
【问题描述】:

我有以下 curl 命令,我需要使用 Matlab 和使用 POST 的 webwrite 将其发送到 Web 服务器。我的问题是我总是得到一个“错误请求”的答案,所以我的语法一定是错误的。有谁知道这个 curl 命令如何以正确的方式使用 webwrite 在 Matlab 中发送正文?

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 <AUTHENTICATION TOKEN>" \
  -d "$body" \
  "https://api-fxtrade.oanda.com/v3/accounts/<ACCOUNT>/orders"

【问题讨论】:

    标签: matlab curl


    【解决方案1】:

    我刚刚问了一个可能类似的问题,所以这可能第一次不起作用。但是我无法在不知道一些登录详细信息的情况下进行测试,所以我可以但希望这会有所帮助。

    data_InputValues = struct ('units',100,'instrument','EUR_USD','timeInForce','FOK','type','MARKET','positionFill','DEFAULT');
    MyBody = matlab.net.http.MessageBody(struct('order',data_InputValues));
    
    MyHTTPOptions = matlab.net.http.HTTPOptions(); % use this to change the options if necessary (e.g. extend timeout)
    Request = matlab.net.http.RequestMessage;
    Request.Method = 'POST';
    Request.Header = matlab.net.http.HeaderField('Content-Type','application/json','Authorization: Bearer',AUTHENTICATION TOKEN);
    Request.Body = MyBody;
    uri = matlab.net.URI('https://api-fxtrade.oanda.com/v3/accounts/<ACCOUNT>/orders');
    [response a ~] = Request.send(uri,MyHTTPOptions);
    

    我努力的部分是生成 MyBody 部分(在您的情况下,这是解析 order 变量的子变量)。如果你让它工作,我很想知道如何!附:我的问题是否有帮助:Matlab RESTful PUT Command - net.http - nesting body values

    【讨论】:

      【解决方案2】:

      正文的正确格式如下:

      body = struct('units',100,'instrument','EUR_USD','timeInForce','FOK',...
         'type','MARKET','positionFill','DEFAULT');
      

      至于您需要的 HTTP 标头,您可以在使用 webwrite 时使用 weboptions 指定它们。

      附加标头的语法:

      options = weboptions('KeyName','Name','KeyValue','Value')
      

      其中 Name 和 Value 分别是标头的名称及其值。 您必须在 weboptions 中添加所需的标头。

      对于您提供的代码,正确的语法如下:

      options = weboptions('MediaType','application/json',...
      'KeyName','Authorization: Bearer','KeyValue','Token');
      

      然后您可以在感兴趣的 URL 处执行 POST 请求。

      response = webwrite(url,body,options);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 2020-03-12
        • 2017-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多