exponenta event banner

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

Вы можете позвонить webread из определенных вами функций. Рекомендуется разрешить вашей функции передавать параметры HTTP-запроса webread.

В этом образце кода показано, как загрузить климатические данные для страны. Образец определяет функцию в файле с именем worldBankTemps.m это загружает ежегодные температуры из Всемирного банка и преобразует их в градусы по Фаренгейту. Вы можете передать дополнительные параметры 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. Если время подключения к веб-службе Всемирного банка истекло, служба возвращает сообщение об ошибке.

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)