Main Content

webwrite

将数据写入 RESTful Web 服务

说明

示例

response = webwrite(url,PostName1,PostValue1,...,PostNameN,PostValueN) 将内容写入 url 指定的 Web 服务并返回 response。输入参数 PostName1,PostValue1,...,PostNameN,PostValueN 将内容指定为名称-值对组。webwrite 对 Web 服务的 HTTP POST 请求的主体中的名称-值对组进行表单编码。由 Web 服务定义 response

Web 服务提供了一个RESTful,后者可以返回具有 Internet 媒体类型格式(例如 JSON、XML、图像或文本)的数据。

示例

response = webwrite(url,data)data 发布到由 url 指定的 Web 服务,并根据 data 设置媒体类型。

输入参数 data 将内容指定为表单编码的字符数组。webwritedata 置于 Web 服务的 HTTP POST 请求消息主体中。由 Web 服务定义 response

示例

response = webwrite(___,options) 添加由 weboptions 对象 options 指定的其他 HTTP 请求选项。您可以将此语法与前面语法中的任何输入参数结合使用。

要以 Internet 媒体类型而不是表单编码的字符数组形式 ('application/x-www-form-urlencoded') 写入内容,请指定 optionsMediaType 属性。

要使用 HTTP POST 请求来请求数据并使用函数读取响应,请将 optionsContentReader 属性指定为该函数的句柄。如果指定了一个返回多个输出参数的函数句柄,则 webwrite 将返回所有输出参数。

示例

全部折叠

将数字写入 ThingSpeak 服务器上的通道源,并进行回读。

要运行此代码,请创建一个 ThingSpeak 帐户。使用您的 ThingSpeak 帐户的 Write API 密钥和 Channel ID 调用 webwrite。默认字段名称为 '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

重新读取您写入您 channel 的数值。ThingSpeak 提供了一个不同的 URL 用来访问您的 channel。您的 Channel ID 属于该 URL 的一部分。

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

42

此示例说明如何将数据写入 Web 服务器。

httpUrl  = 'http://requestserver.mathworks.com';
delim = '&';
pairDelim = '=';
data = 42;
data = num2str(data);
data = ['key', pairDelim, 'value', delim, 'field', pairDelim, data];
responseData = webwrite(httpUrl, data);
disp(responseData);
    dataType: 'application/x-www-form-urlencoded'
    dataSize: '18'

此示例说明如何将一条记录作为 JSON 对象写入。

httpsUrl = 'https://requestserver.mathworks.com';
employee(1).Name = 'Jon';
employee(1).Occupation = 'Doctor';
employee(2).Name = 'Sarah';
employee(2).Occupation = 'Engineer';
options = weboptions('MediaType', 'application/json');
responseEmployee = webwrite(httpsUrl, employee, options)
responseEmployee = struct with fields:
    dataType: 'application/json; charset=UTF-8'
    dataSize: '79'

将数字和特定日期写入 ThingSpeak 服务器上的通道源。回读该数字和日期。

要运行此代码,请创建一个 ThingSpeak 帐户。使用您的 ThingSpeak 帐户的 Write API 密钥和 Channel ID 调用 webwrite。使用 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 用来访问您的 channel。将 last.json 追加到 URL,以获取作为 JSON 对象的数据。您的 Channel ID 属于该 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'

输入参数

全部折叠

Web 服务的 URL,指定为字符向量或字符串标量。包括传输协议。仅支持 httphttps。Web 服务实现 RESTful 接口。有关详细信息,请参阅 RESTful

Web 服务 post 参数,指定为一个或多个名称-值对组参数。PostName 参数必须指定 post 参数的名称。PostValue 参数必须是字符向量、字符串标量或者用于指定 post 参数值的数值、逻辑值或 datetime 值。数值、逻辑值和 datetime 值可以置于数组中。Web 服务定义作为请求的一部分而被接受的名称-值对组。默认情况下,webwrite 将名称-值对组进行编码,使其作为 HTTP POST 请求消息主体中的表单编码字符数组,并将内容类型设置为 application/x-www-form-urlencoded

当您将 PostValue 指定为 datetime 对象时,必须指定其 Format 属性,以便它与 Web 服务要求的格式一致。如果 Format 属性包含时区或偏移量,而 datetime 对象未设置时区,则 webwrite 会将 'Local' 指定为时区。

PostValue 参数在一个数组中包含多个值时,请指定 weboptions 对象的 ArrayFormat 属性,以按照 Web 服务指定的方式对该数组进行表单编码。

示例: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term','webwrite','duration',7) 检索过去 7 天中上传至 File Exchange 且包含单词 webwrite 的文件列表。File Exchange Web 服务会定义 termduration 参数。

要发布到 Web 服务的数据,指定为字符向量或字符串标量,对于 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 天中上传至 File Exchange 且包含单词 webwrite 的文件列表。File Exchange Web 服务会定义 termduration 参数。

其他 HTTP 请求选项,指定为 weboptions 对象。有关作为 weboptions 属性的所有请求选项,请参阅 weboptions

输出参数

全部折叠

来自 Web 服务的响应,以标量、数组、结构体或表的形式返回。

详细信息

全部折叠

RESTful

REST 表示表述性状态转移 (representational state transfer),Web 服务的一种常用体系结构样式。RESTful 接口提供标准的 HTTP 方法,例如 GET、PUT、POST 或 DELETE。

提示

  • 有关 RESTful Web 服务函数不支持的功能,请参阅 HTTP 接口

  • webwrite 函数将 PostName,PostValue 输入参数以表单编码的字符数组形式写入。如果还指定了 options 输入参数,则其 MediaType 属性必须为 'application/x-www-form-urlencoded'

  • webwrite 无法将 datetime 对象转换为 JSON,因为 JSON 不定义标准日期格式。

  • webwrite 始终将 PostName,PostValue 查询参数放入消息主体,而不管 optionsRequestMethod 属性值是什么。

  • 要指定代理服务器设置,请参阅Proxy Server Authentication

版本历史记录

在 R2015a 中推出