Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

webread

从 RESTful Web 服务读取内容

说明

示例

data = webread(url)url 指定的 Web 服务读取内容并在 data 中返回内容。

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

示例

data = webread(url,QueryName1,QueryValue1,...,QueryNameN,QueryValueN) 按照一个或多个名称-值对组参量指定的方式将查询参数追加到 url。要将查询放入消息主体,请使用 webwrite。Web 服务定义查询参数。

示例

data = webread(___,options) 添加由 weboptions 对象 options 指定的其他 HTTP 请求选项。您可将此语法与上述语法中的任何输入参数一起使用。

要将数据返回为特定输出类型,请指定 optionsContentType 属性。

要使用函数读取内容,请将 optionsContentReader 属性指定为该函数的句柄。webread 从 Web 服务下载数据并使用指定的函数读取这些数据:

  • 如果指定了一个返回多个输出参数的函数句柄,则 webread 将返回所有输出参数。

  • 如果指定了一个不返回任何输出参数的函数句柄(例如视频文件的 Image Processing Toolbox™ 函数 @implay),则 webread 将不返回任何输出参数。

[data,colormap,alpha] = webread(___)url 指定的 Web 服务中读取图像,并在 data 中返回该图像。您可以使用上述语法仅返回图像。使用此语法可返回与该图像关联的颜色图和 alpha 通道。

如果 HTTP 响应具有用于指定图像媒体类型的 Content-Type 标头字段且 imread 支持该图像格式,则 webread 将返回一个图像。有关受支持的图像格式,请参阅支持的导入和导出的文件格式

[data,Fs] = webread(___)url 指定的 Web 服务中读取音频数据,并在 data 中返回这些数据。您可以使用上述语法仅返回音频数据。使用此语法可返回音频数据的采样率(以赫兹为单位)。

如果 HTTP 响应具有用于指定音频媒体类型的 Content-Type 标头字段且 audioread 支持该音频格式,则 webread 将返回音频数据。有关受支持的音频格式,请参阅支持的导入和导出的文件格式

示例

全部折叠

此示例说明如何从网站上读取一个图像并显示它。

读取图像数据

httpsUrl = 'https://requestserver.mathworks.com';
imageUrl = strcat(httpsUrl, '/assets/computerVision.jpg');
rgb = webread(imageUrl);
whos rgb
  Name        Size                Bytes  Class    Attributes

  rgb       360x640x3            691200  uint8              

调整大小和显示图像

rgb = imresize(rgb, 0.6);
imshow(rgb)

此示例说明如何从 csv 数据文件中读取温度。

从 CSV 文件中读取数据

httpsUrl = "https://requestserver.mathworks.com";
dataUrl = strcat(httpsUrl, "/assets/weatherStation.csv");
data = webread(dataUrl);
time = [data.Time];
temp = [data.TempF];

显示温度图

plot(time, temp)
xlabel("Time")
ylabel("Temperature (Farenheit)")
title("Temperature Over Time");
axis padded

此示例说明如何使用查询参数选择一条记录。

查看雇员数据库结构

显示数据库 employee 的字段。

httpsUrl = "https://requestserver.mathworks.com";
employeeUrl = strcat(httpsUrl, "/employee");
fieldnames(webread(employeeUrl))
ans = 6×1 cell
    {'id'        }
    {'firstName' }
    {'lastName'  }
    {'occupation'}
    {'age'       }
    {'city'      }

firstNamelastName 选择雇员

jSmith = webread(employeeUrl, "firstName", "John", "lastName", "Smith");
disp(jSmith);
            id: 1
     firstName: 'John'
      lastName: 'Smith'
    occupation: 'Software Engineer'
           age: '32'
          city: 'Boston'

此示例说明如何以特定类型形式返回数据。

读取数据

httpUrl  = "http://requestserver.mathworks.com";
employeeUrl = strcat(httpUrl, "/employee");

以字符数组形式返回记录

创建一个 weboptions 对象并将其 ContentType 设置为 'text'webread 函数将 JSON 对象转换为字符数组。

options = weboptions("ContentType", "text");
sBrown = webread(employeeUrl, "firstName", "Sarah", options);
disp(sBrown)
[{"id":2,"firstName":"Sarah","lastName":"Brown","occupation":"Software Engineer","age":"28","city":"New York"}]

输入参数

全部折叠

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

示例: webread('https://www.mathworks.com/matlabcentral') 读取网页并以字符数组形式返回其 HTML。

Web 服务查询参数,指定为一个或多个名称-值对组参数。QueryName 参数必须将查询参数的名称指定为字符向量或字符串标量。QueryValue 参数必须是字符向量、字符串标量或者用于指定查询参数值的数值、逻辑值或 datetime 值。数值、逻辑值和 datetime 值可以置于数组中。Web 服务定义作为请求的一部分而被接受的名称-值对组。

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

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

示例: webread('https://www.mathworks.com/matlabcentral/fileexchange/','term','webread') 检索上传至 File Exchange 且包含单词 webread 的文件列表。

其他 HTTP 请求选项,指定为 weboptions 对象。

可指定 weboptions 对象的 ContentType 属性,并将该对象作为输入参数传递到 webread。然后,webread 会将 data 作为该类型的输出返回。该表列出了您可以在 weboptions 对象中指定的有效内容类型。

ContentType 设定符

输出类型

'auto'(默认值)

根据服务器指定的内容类型自动确定输出类型。

'text'

内容类型的字符向量:

text/plain
text/html
text/xml
application/xml
application/javascript
application/x-javascript
application/x-www-form-urlencoded

如果 Web 服务返回一个具有 .m 扩展名的 MATLAB® 文件,则该函数将以字符向量形式返回该文件的内容。

'image'

image/format 内容的数值或逻辑矩阵。如果第一个输出参数是索引图像,第二个输出参数是颜色图,第三个输出参数是 alpha 通道。

有关受支持的图像格式,请参阅支持的导入和导出的文件格式

'audio'

audio/format 内容的数值矩阵(数值标量采样率作为第二个输出参数)。

有关受支持的音频格式,请参阅支持的导入和导出的文件格式

'binary'

二进制内容的 uint8 列向量,此处的二进制内容是指那些不能作为 char 类型进行处理的内容。

'table'

电子表格和 CSV (text/csv) 内容的标量表格对象。

'json'

application/json 内容的 char、数值、逻辑值、结构体或元胞数组。

'xmldom'

text/xmlapplication/xml 内容的 Java® 文档对象模型 (DOM) 节点。如果未指定,则该函数将以字符向量形式返回 XML 内容。

'raw'

'text''xmldom''json' 内容的 char 列向量。该函数将以 uint8 列向量的形式返回所有其他内容类型。

有关作为 weboptions 属性的所有请求选项,请参阅 weboptions

输出参数

全部折叠

从 Web 服务读取的内容,以标量、数组、结构体或表的形式返回。

与索引图像关联的颜色图,以数值数组的形式返回。

与索引图像关联的 Alpha 通道,以数值数组的形式返回。

音频数据的采样率(以赫兹为单位),以正数值标量的形式返回。

详细信息

全部折叠

RESTful

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

提示

  • 有关 RESTful Web 服务函数不支持的功能,请参阅 使用 HTTP 从 MATLAB 调用 Web 服务

  • webread 支持 HTTP GET 和 POST 方法。许多 Web 服务同时提供 GET 和 POST 方法用于请求数据。要发送 HTTP POST 请求,请将 optionsRequestMethod 属性指定为 'post'。但是,webread 将查询选项放入 url,而不是放入请求消息的主体。要将查询放入消息主体,请使用 webwrite

  • 对于 HTTP POST 请求,webread 函数仅支持 application/x-www-form-urlencoded 媒体类型。要将 POST 请求与任何其他 Internet 媒体类型的内容一起发送,请使用 webwrite

  • 此函数不会检查文档内容来确定如何处理它。例如,HTML 和 XML 文档通常包含一个 <meta> 标记,指定文档的字符编码。如果该编码与默认的 webread 编码不同,请在 weboptions 中指定正确的 CharacterEncoding 选项。

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

扩展功能

版本历史记录

在 R2014b 中推出