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

读回您写给通道的数字。ThingSpeak 提供不同 URL 来获取您的通道的最后一个条目。您的 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)
responseData = struct with fields:
    dataType: 'application/json; charset=UTF-8'
    dataSize: '40'

将数据库记录作为 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 来获取您的通道的最后一个条目。将 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 值进行转换。有关详细信息,请参阅 Internet Engineering Task Force (IETF®) 网站上的 RFC 6838 Media Type Specifications and Registration Procedures。

其他 HTTP 请求选项,指定为 weboptions 对象。请参阅 weboptions 了解所有请求选项,这些选项列为 weboptions 属性。

输出参量

全部折叠

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

详细信息

全部折叠

RESTful

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

提示

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

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

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

  • 有关如何指定代理服务器设置的信息,请参阅Proxy Server Authentication

扩展功能

版本历史记录

在 R2015a 中推出

全部展开