Вызов веб-сервисов от функций

Можно вызвать webread от функций, которые вы задаете. Лучшая практика состоит в том, чтобы позволить вашей функции передавать опции запроса HTTP webread.

Этот пример кода показывает, как загрузить данные о климате для страны. Выборка задает функцию в файле с именем worldBankTemps.m, который загружает ежегодные температуры с World Bank и преобразовывает их в градусы по Фаренгейту. Можно передать дополнительные параметры запроса HTTP с входным параметром options. options является объектом weboptions, который worldBankTemps передает webread. Можно вызвать worldBankTemps с названием страны только, когда вы не должны задавать никакие другие параметры запроса HTTP.

function temperatures = worldBankTemps(country,options)
% Get World Bank temperatures for a country, for example, 'USA'.
api = 'http://climatedataapi.worldbank.org/climateweb/rest/v1/';
api = [api 'country/cru/tas/year/'];
country = [api country];

% The options object contains additional HTTP
% request parameters. If worldBankTemps was
% not passed options as an input argument,
% create a default weboptions object.
if ~exist('options','var')
    options = weboptions;
end
s = webread(country,options);

% Convert data to arrays
temperatures = struct('Years',[],'DegreesInFahrenheit',[]);
temperatures(1).Years = [s.year];
temperatures(1).DegreesInFahrenheit = [s.data];

% Convert temperatures to Fahrenheit
temperatures(1).DegreesInFahrenheit = temperatures(1).DegreesInFahrenheit * 9/5 + 32;
end

Чтобы получить температурные данные для США, вызовите worldBankTemps. Если связь с веб-сервисом World Bank испытывает таймаут, сервис возвращает сообщение об ошибке.

S = worldBankTemps('USA')
Error using webread (line 112)
The connection to URL 'http://climatedataapi.worldbank.org/climateweb/rest/v1/country/cru/tas/year/USA' 
timed out after 5.0 seconds. Set options.Timeout to a higher value.

Если вы создаете options и устанавливаете его свойство Timeout на 60 секунд, то можно вызвать worldBankTemps снова с options как входной параметр. worldBankTemps передает options webread как входной параметр. На этот раз webread сохраняет связь открытой максимум для 60 секунд.

options = weboptions('Timeout',60);
S = worldBankTemps('USA',options)
S = 

                  Years: [1x112 double]
    DegreesInFahrenheit: [1x112 double]

Если ваш код не позволяет вам передавать опции запроса webread, который ограничивает вашу способность ответить на сообщения об ошибке, возвращенные веб-сервисами.

Сообщения об ошибке относительно опций веб-сервиса

Когда вы используете функцию веб-сервиса в MATLAB®, функциональная сила возвращает сообщение об ошибке, которое советует вам устанавливать свойство options, такого как options.Timeout. Эта таблица показывает некоторые типичные сообщения об ошибке, которые относятся к свойствам options и мерам, которые можно принять в ответ.

Сообщение об ошибке содержит фразуДействие, которое будет взято

Set options.Timeout to a higher value.

options = weboptions('Timeout',60)
data = webread(url,options)

Set options.ContentType to 'json'.

options = weboptions('ContentType','json')
data = webread(url,options)

... the provided authentication parameters, options.Username and options.Password, are incorrect.

options = weboptions('Username','your username','Password','your password')
data = webread(url,options)

Для просмотра документации необходимо авторизоваться на сайте