передать HTTP-заголовок «_method» в функцию urlread2 в matlab

1

Привет, я пытаюсь использовать функцию urlread2 в Matlab для отправки запроса в REST API. В общем, это уже работает, но для одного конкретного вызова API есть документированная ошибка в API: Обычно я бы использовал HTTP-метод "DELETE" и передал запрос, как здесь:

headers  =     [http_createHeader('Content-Type','application/json; charset=UTF-8'),...
                http_createHeader('Accept','application/json; charset=UTF-8'),...
                http_createHeader('X-IG-API-KEY',api_key)];

json_body =  savejson('',body);

response = urlread2(myURL,'DELETE',json_body,headers);

Это приводит к ошибке. Вместо этого мне рекомендуется использовать:

headers  =     [http_createHeader('Content-Type','application/json; charset=UTF-8'),...
                http_createHeader('Accept','application/json; charset=UTF-8'),...
                http_createHeader('X-IG-API-KEY',api_key,...
                http_createHeader('_method','DELETE')];

json_body =  savejson('',body);

response = urlread2(myURL,'POST',json_body,headers);

Причина ошибки заключается в том, что в противном случае, по неизвестной причине, тело сообщения теряется во время процесса и это приводит к ошибке.

Моя проблема заключается в том, что это обходное решение работает в песочнице (без кода Matlab!). Но использование Matlab, как показано здесь, ничего не меняет, тот же ответ в обоих случаях. Поэтому я предполагаю, что функция urlread2 не может обрабатывать запрос, как ожидалось. Кто-нибудь есть идея здесь?

В обеих зависимостях здесь хорошо известны функции matlab:

JSONlab на matlabCentral urlread2 на matlabCentral

Теги:
rest
http

1 ответ

1

urlread2, наряду с исходным urlread, основывается на базовых классах Java, которые не поддерживают включение тела с запросом удаления

См. Раздел " Удаление HTTP с запросом".

Альтернативой, не упомянутой на странице, является интерфейс Matlab с библиотекой запросов Python (требуется 2014b или новее). Я медленно работаю над этим сейчас, так как это должно позволить более грациозно обрабатывать такие вещи, как куки, а также правильно обрабатывать множество ошибок, которые имеет реализация Java по умолчанию (например, не включая тело в методе удаления)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню