Перевод curl в Matlab / Webwrite - PullRequest
0 голосов
/ 14 мая 2018

У меня есть следующая команда curl, которую нужно отправить на веб-сервер с использованием Matlab и webwrite с помощью POST.Моя проблема в том, что я всегда получаю ответ «Плохой запрос», поэтому мой синтаксис должен быть как-то неправильным.У кого-нибудь есть идея, как эта команда curl, отправляющая тело, могла бы выглядеть в Matlab с использованием webwrite правильным образом?

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"

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Правильный формат для тела следующий:

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

Что касается требуемых HTTP заголовков , вы можете указать их с помощью weboptions при использовании webwrite .

Синтаксис для дополнительного заголовка:

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

Где Имя и Значение - название заголовка и его значение соответственно. Вы должны добавить заголовки, которые вам нужны в weboptions.

Для предоставленного вами кода правильный синтаксис будет следующим:

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

Затем вы можете выполнить запрос POST по интересующему URL.

response = webwrite(url,body,options);
0 голосов
/ 18 мая 2018

Я только что задал потенциально похожий вопрос, поэтому он может не сработать в первый раз.Однако я не могу проверить, не зная некоторых данных для входа, поэтому надеюсь, что это поможет.

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 (в вашем случае это парсинг переменных переменной порядка),Если вы заставите это работать, я бы хотел узнать как!PS Мой вопрос на случай, если это поможет: Команда RESTful PUT Matlab - net.http - значения вложенности тела

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...