exponenta event banner

webwrite

Запись данных в веб-службу RESTful

Описание

пример

response = webwrite(url,PostName1,PostValue1,...,PostNameN,PostValueN) записывает содержимое в веб-службу, указанную url и возвращает response. Входные аргументы PostName1,PostValue1,...,PostNameN,PostValueN укажите содержимое как пары имя-значение. webwrite форма-кодирует пары имя-значение в теле запроса HTTP POST к веб-службе. Веб-служба определяет response.

Веб-служба предоставляет RESTful, который возвращает данные, отформатированные как интернет-носитель типа JSON, XML, изображение или текст.

пример

response = webwrite(url,data) посты data в веб-службу, указанную url и устанавливает тип носителя на основе data.

Входной аргумент data задает содержимое в виде символьного массива в кодировке формы. webwrite помещает data в теле запроса HTTP POST к веб-службе. Веб-служба определяет response.

пример

response = webwrite(___,options) добавляет другие параметры HTTP-запроса, указанные в weboptions объект options. Этот синтаксис можно использовать с любым из входных аргументов предыдущих синтаксисов.

Запись содержимого в виде интернет-носителя, отличного от массива символов в кодировке формы ('application/x-www-form-urlencoded'), укажите MediaType имущество options.

Чтобы запросить данные с запросом HTTP POST и прочитать ответ с помощью функции, укажите ContentReader имущество options в качестве дескриптора функции. Если указать дескриптор функции, возвращающей несколько выходных аргументов, webwrite возвращает все выходные аргументы.

Примеры

свернуть все

Запишите число в канал на сервере ThingSpeak и прочитайте его обратно.

Чтобы запустить этот код, создайте учетную запись ThingSpeak. Звонить webwrite используя ключ API записи и идентификатор канала из учетной записи ThingSpeak. Имя поля по умолчанию: 'field1'.

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
fieldName = 'field1';
fieldValue = 42;
response = webwrite(thingSpeakWriteURL,'api_key',writeApiKey,fieldName,fieldValue)

Если этот вызов webwrite является первым обновлением канала ThingSpeak, response является 1.

Прочитайте номер, который вы написали своему каналу. ThingSpeak предоставляет другой URL-адрес для получения последней записи на вашем канале. Идентификатор канала является частью URL-адреса.

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/' fieldName '/last'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)
data =

42

Запишите число в виде массива символов в кодировке формы в канальный канал на сервере ThingSpeak и прочитайте его обратно.

Чтобы запустить этот код, создайте учетную запись ThingSpeak. Звонить webwrite используя ключ API записи и идентификатор канала из учетной записи ThingSpeak. Кодируйте ключ API записи и число как массив символов в кодировке формы. Имя поля по умолчанию: 'field1'.

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
data = 42;
data = num2str(data);
data = ['api_key=',writeApiKey,'&field1=',data];
response = webwrite(thingSpeakWriteURL,data)

Если этот вызов webwrite является первым обновлением канала ThingSpeak, response является 1.

Прочитайте номер, который вы написали своему каналу. ThingSpeak предоставляет другой URL-адрес для получения последней записи на вашем канале. Идентификатор канала является частью URL-адреса.

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/field1/last'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)
data =

42

Запишите число как объект JSON в канальную ленту на сервере ThingSpeak и прочитайте ответ как объект JSON.

Чтобы запустить этот код, создайте учетную запись ThingSpeak. Звонить webwrite используя ключ API записи и идентификатор канала из учетной записи ThingSpeak. Создайте структуру, в которой поля являются ключом API записи и номером. Имя поля по умолчанию: 'field1'. Укажите тип носителя как 'application/json'.

thingSpeakURL = 'http://api.thingspeak.com/update.json';
writeApiKey = 'Your Write API Key';
data = 42;
data = struct('api_key',writeApiKey,'field1',data);
options = weboptions('MediaType','application/json');
response = webwrite(thingSpeakURL,data,options)
response = 

    channel_id: Your Channel ID
        field1: 42
        field2: []
        field3: []
        field4: []
        field5: []
        field6: []
        field7: []
        field8: []
    created_at: '2014-11-14T20:08:14Z'
      entry_id: 1
        status: []
      latitude: []
     longitude: []
     elevation: []
      location: []

Как ответ webwrite получает объект JSON, содержащий номер, записанный в канал ThingSpeak. webwrite преобразует объект JSON и возвращает его как структуру в response.

Запишите число и конкретную дату в канальный канал на сервере ThingSpeak. Прочитайте номер и датируйте.

Чтобы запустить этот код, создайте учетную запись ThingSpeak. Звонить webwrite используя ключ API записи и идентификатор канала из учетной записи ThingSpeak. Укажите дату для записи канала с помощью datetime объект.

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
fieldName = 'field1';
fieldValue = 42;
D = datetime(2015,3,22,8,15,30,'Format','yyyy-MM-dd HH:mm:ss');
response = webwrite(thingSpeakWriteURL,'api_key',writeApiKey,...
    fieldName,fieldValue,'created_at',D)

Если этот вызов webwrite является первым обновлением канала ThingSpeak, response является 1.

Прочитайте последнюю запись на вашем канале. ThingSpeak предоставляет другой URL-адрес для получения последней записи на вашем канале. Приложить last.json на URL для получения данных в виде объекта JSON. Идентификатор канала является частью URL-адреса.

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/' ...
    fieldName '/last.json'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)
data = 

    created_at: '2015-03-22T08:15:30Z'
      entry_id: 1
        field1: '42'

Дата в created_at соответствует дате, указанной в D.

Запишите два аргумента пары имя-значение в httpbin.org. Сайт возвращает параметры POST запроса.

uri = matlab.net.URI('http://httpbin.org/post');
res = webwrite(uri,'field1','hello','field2','world');
res.form
ans = 

  struct with fields:

    field1: 'hello '
    field2: 'world'

Входные аргументы

свернуть все

URL-адрес веб-службы, указанный как вектор символов или скаляр строки. Включите протокол передачи. Только http и https поддерживаются. Веб-служба реализует интерфейс RESTful. Для получения дополнительной информации см. RESTful.

Веб-служба размещает параметры, указанные как одна или несколько пар аргументов «имя-значение». A PostName аргумент должен указывать имя параметра post. A PostValue аргумент должен быть символьным вектором, строковым скаляром или числовым, логическим или datetime значение, указывающее значение параметра post. Числовые, логические и datetime значения могут быть в массивах. Веб-служба определяет пары имя-значение, которые она принимает как часть запроса. webwrite кодирует пары имя-значение как массив символов в кодировке формы в теле запроса HTTP POST и устанавливает тип контента как application/x-www-form-urlencoded по умолчанию.

При указании PostValue в качестве datetime объект, необходимо указать его Format , чтобы оно соответствовало формату, требуемому веб-службой. Если Format включает часовой пояс или смещение, и datetime объект не зонирован, то webwrite определяет 'Local' в качестве часового пояса.

Когда PostValue содержит несколько значений в массиве, укажите ArrayFormat свойство weboptions объект для form-кодирования массива, как указано веб-службой.

Пример: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term','webwrite','duration',7) извлекает список файлов, отправленных на файловый обмен в течение последних 7 дней, которые содержат это слово webwrite. Веб-служба File Exchange определяет term и duration параметры.

Данные для отправки в веб-службу, указанные как вектор символов, скаляр строки или как числовые, ячейки, логические или структуры для MediaType стоимость 'json'или в качестве объектной модели документа для MediaType стоимость 'XML'. Если data является символьной строкой или символьным вектором, то webwrite отправляет его без преобразования. Все остальные типы преобразуются на основе weboptions.MediaType значение. Дополнительные сведения см. в разделе https://tools.ietf.org/html/rfc6838.

Пример: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term=webwrite&duration=7') извлекает список файлов, отправленных на файловый обмен в течение последних 7 дней, которые содержат это слово webwrite. Веб-служба File Exchange определяет term и duration параметры.

Дополнительные параметры HTTP-запроса, указанные как weboptions объект. Посмотрите weboptions для всех вариантов запроса, которые являются weboptions свойства.

Выходные аргументы

свернуть все

Ответ веб-службы, возвращаемый в виде скаляра, массива, структуры или таблицы.

Подробнее

свернуть все

УСПОКОИТЕЛЬНЫЙ

REST означает передачу представительного состояния, общий архитектурный стиль для веб-сервисов. Интерфейсы RESTful обеспечивают стандартные методы HTTP, такие как GET, PUT, POST или DELETE.

Совет

  • webwrite функция записывает PostName,PostValue входные аргументы в виде символьных массивов в кодировке формы. Если также указать options входной аргумент, затем его MediaType свойство должно быть 'application/x-www-form-urlencoded'.

  • webwrite не удается преобразовать datetime объектов в JSON, поскольку JSON не определяет стандартный формат даты.

  • webwrite всегда ставит PostName,PostValue запрос параметров в тело сообщения независимо от значения RequestMethod имущество options.

Представлен в R2015a