matlab.net.http.MessageBody 类
命名空间: matlab.net.http
HTTP 消息的主体
描述
MessageBody
对象包含 HTTP 消息的主体。在请求消息中,将 Body
属性设置为您的数据或者包含这些数据的 MessageBody
对象。在响应消息中,此对象包含接收到的数据。
消息数据由两个属性表示。Payload
属性包含发送给网络或从网络接收到的原始字节。Data
属性将 Payload
作为一种 MATLAB® 类型包含在内。这两个属性通常只设置一个。
创建对象
MessageBody
对象包含 HTTP 消息的主体。在请求消息中,将 Body
属性设置为您的数据或者包含这些数据的 MessageBody
对象。在响应消息中,此对象包含接收到的数据。
消息数据由两个属性表示。Payload
属性包含发送给网络或从网络接收到的原始字节。Data
属性将 Payload
作为一种 MATLAB 类型包含在内。这两个属性通常只设置一个。
属性
Data
— 消息数据
uint8
向量或数组 | 字符数组 | 字符串 | 结构体数组 | 图像数据 | XML DOM | 音频数据 | 表
消息数据,指定为下列 MATLAB 数据类型之一。有关转换的详细信息,请参阅 HTTP Data Type Conversion。
uint8
向量 - 不转换Data
。字符数组或标量字符串 - 基于 Content-Type 标头中的媒体类型及其字符集属性转换
Data
。结构体数组 - 使用
webread
和webwrite
将 JSON 字符串转换为Data
或反向转换。图像 - 使用
imread
和imwrite
将图像转换为Data
或反向转换。XML DOM - 使用
xmlread
和xmlwrite
将Data
转换为字符串或反向转换。音频数据 - 使用
audioread
和audiowrite
转换Data
。表 - 使用
readtable
和writetable
转换Data
。其他类型的数组或元胞数组 - 使用
jsonencode
和jsondecode
将 JSON 转换为Data
或反向转换。
在请求消息中,Data
属性是转换为 uint8
有效负载之前的 MATLAB 数据。当您调用 RequestMessage
send
或 complete
方法时,将发生数据转换。转换取决于您在消息中指定的 Content-Type 以及 Data
的类型。如果您不指定 Content-Type,send
和 complete
方法将尝试根据数据推断出其类型,并向请求消息中添加相应的 ContentTypeField。
在响应消息中,Data
代表基于服务器指定的 Content-Type 转换为 MATLAB 类型的 uint8
有效负载。如果转换失败,Data
将保留为空,原始数据将出现在 Payload
属性中。
要阻止自动转换响应 Payload
,请将 HTTPOptions.ConvertResponse
属性设置为 false
。在这种情况下,Data
中将包含一个字符数据字符串或 uint8
字节向量。
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
ContentType
— 数据的 Content-Type
MediaType
对象
Data
属性的 Content-Type,指定为只读 matlab.net.http.MediaType
对象。此属性决定如何将 Data
属性的内容转换为有效负载或进行反向转换。如果 Content-Type 有一个具有字符集属性的 MediaType
,则由该字符集决定编码方式。有关详细信息,请参阅 Internet Engineering Task Force (IETF®) 网站上的 RFC 2616, section 14.17 Content-Type。
此属性的值通常与对包含此 MessageBody
的消息中的 Content-Type 字段调用 convert
的结果相同。
您不需要在请求消息中设置 ContentType
。当您创建 MessageBody
对象时,此属性为空。当您将 MessageBody
复制到请求消息中时,ContentType
将被设置为该消息中的 ContentTypeField
的值(如果有)。RequestMessage
send
和 complete
方法会基于请求消息中的 Data
的类型和 ContentTypeField
的值来设置 ContentType
。
在响应消息中,ContentType
基于消息的 ContentTypeField
。
属性:
GetAccess | public |
SetAccess | public |
Transient | true |
ContentCoding
— 有效负载的 Content-Encoding
字符串
可以设置此属性以指示 ResponseMessage
的 Payload
属性已编码。设置 ContentCoding
时,并未对有效负载进行任何处理,而且 Data
属性为空。
如果 MATLAB 收到一条消息,而消息的有效负载是使用它所支持的压缩算法(例如 gzip
或 deflate
)编码的,则它会在进行其他任何转换之前自动解码该有效负载。如果解码成功,它会将解码的有效负载存储在 Payload
中,而将转换后的有效负载(如果有)存储在 Data
中。在这种情况下,此属性将为空,指示 Payload
未编码。
如果有效负载已编码但解码失败,或者您通过将 HTTPOptions.DecodePayload
属性设置为 false
禁用了解码,将在 Payload
中返回未处理的已编码有效负载,将 Data
保留为空,并将 ContentCoding
设置为字符串向量(代表响应消息中的 Content-Encoding 标头字段的值)。在这种情况下,您可以按原样保存 Payload
(例如,写入到文件中),或者根据 ContentCoding
中指定的压缩算法进行处理。例如,如果值为 gzip
,则您可以将数据写入到文件中,并使用 gunzip
命令来处理数据。
属性:
GetAccess | public |
SetAccess | public |
Transient | true |
数据类型: string
Payload
— 消息中发送的原始字节
空 (默认) | uint8
向量 | 标量字符串 | 字符向量
消息中发送的原始字节,指定为 uint8
向量、标量字符串或字符向量。在请求消息中,为方便起见,您可以将 Payload
设置为标量字符串或字符向量。MATLAB 会将该值转换为 uint8
向量。在响应消息中,Payload
始终为 uint8
向量。
在请求消息中:
将使用
ContentType
属性中指定或隐含的字符集(如果有)对标量字符串或字符向量进行转换,如果未设置,则使用UTF-8
编码方式。要使用不同的编码方式,请自己进行编码,例如,使用unicode2native
函数,并将生成的uint8
向量转换为Payload
。如果您不想对字节数组进行输出转换,请设置
Payload
属性,而非Data
属性。如果您选择设置Data
,则当您在RequestMessage.send
中指定了请求或历史记录返回参量时,或设置了HTTPOptions.SavePayload
属性时,将会在RequestMessage.complete
的返回值中(满足前者时),或者在ResponseMessage
中(满足后者时)用已发送的字节填充Payload
。当您设置
Payload
时,将清除Data
。如果您发送同时设置了Data
和Payload
的消息,将发送Payload
而忽略Data
。只有send
或complete
方法返回的响应消息和请求消息才可以同时设置这两个属性。
满足以下条件时,Payload
在响应消息中即为接收到的原始字节:
您在
RequestMessage.send
方法中指定了历史记录返回参量。您将
HTTPOptions.SavePayload
属性设置为true
。始终为
LogRecord
中显示的消息设置Payload
有效负载转换为 MATLAB 数据失败时。有关信息,请参阅
HTTPException.History
属性。
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
方法
公共方法
show | 显示或返回消息主体数据的格式化版本 |
专用运算符和函数
这些方法将标准的 MATLAB 运算符和函数应用于此类中的对象。
string | 以字符串形式返回 Data 属性。用于进行诊断或调试。 如果 如果 如果 |
char | 以字符向量形式返回 |
版本历史记录
在 R2016b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)