matlab.net.http.io.ContentProvider类
包:matlab.net.http.io
超类:处理
,matlab.mixin.Heterogeneous
HTTP消息有效负载的ContentProvider
描述
一个内容提供者为HTTP提供数据RequestMessage
当消息正在发送时。一个简单的提供程序从MATLAB转换数据®键入字节流。更复杂的提供程序可以将数据流式传输到服务器,在发送数据的同时获取或生成数据,这避免了在消息开始之前将所有数据存储在内存中的需要。
通常,在向web服务发送数据时(通常在PUT或POST请求中),您将创建一个RequestMessage
然后以a的形式插入数据MessageBody
对象中的RequestMessage。身体
财产。当你用RequestMessage.send
, MATLAB将该数据转换为要发送到服务器的字节流,并根据消息的Content-Type和其中的数据类型进行转换的身体。数据
.看到MessageBody。数据
对于这些转换规则。
而不是插入MessageBody
对象放入RequestMessage。身体
属性,您可以创建内容提供者
对象并插入它。然后,当您发送消息时,MATLAB调用内容提供者
在发送消息时获取要发送的数据缓冲区。
是否插入MessageBody
或者一个内容提供者
进了短信,就叫来了RequestMessage.send
在发送完整个消息并接收到响应或发生错误之前不返回(即被阻塞)。但是有一个内容提供者
, MATLAB定期回调到提供程序中获取要发送的数据缓冲区,在此期间发送被阻塞。在这些回调中,你的内容提供者
可以从任何来源获取数据,如文件、MATLAB数组、硬件传感器、MATLAB函数等。提供者的工作是将数据转换成字节流,以uint8缓冲区的形式,可以发送到web。
内容提供者
是一个抽象类,为类作者设计了子类,使其具有自己的数据生成器或转换器,或者您可以使用(或子类)MATLAB提供程序之一,从各种来源为您生成数据,而无需编写子类。与将数据直接插入对象时发生的自动转换相比,这些提供程序提供的选项使您能够更灵活地控制如何获取和转换数据MessageBody
.使用其中一个内容提供者
子类:
即使您不需要流数据,使用这些提供程序之一也可以简化发送某些类型内容的过程,因为它们将数据从内部表单转换为uint8
流。例如,FormProvider
允许您向服务器发送表单响应,在服务器中您可以方便地将数据表示为数组QueryParameter
对象。MultipartFormProvider
允许您发送多部分表单响应,简化了多部分表单响应的创建。使用any内容提供者
,您需要了解服务器希望您发送的内容类型。
的matlab.net.http.io.ContentProvider
类是a处理
类。
子类的作者
最简单的方法内容提供者
只需要实现getData
方法,在MATLAB请求时提供数据缓冲区。要使用提供程序,请将其插入身体
的性质RequestMessage
.的第三个参数RequestMessage
构造函数,MyProvider
对象,进入身体
:
provider = MyProvider;req = matlab.net.http.RequestMessage('put', headers, provider);Resp = request .send(uri);
这是一个例子MyProvider
类,它从作为参数传递给构造函数的文件名中读取并将其发送到web。为了更好地测量,我们在末尾或删除该提供程序时关闭该文件。
classdef MyProvider < matlab.net.http.io.ContentProvider properties FileID双端方法function obj = MyProvider(name) obj. .FileID = fopen(name);end function [data, stop] = getData(obj, length) [data, len] = fread(obj. length)FileID, length, '*uint8');Stop = len < length;if (stop) fclose(obj.FileID);obj。FileID = [];end end函数delete(obj) if ~isempty(obj. fileid) fclose(obj. fileid);obj。FileID = [];结束结束结束结束
MATLAB调用提供程序完整的
在形成要发送的新消息时使用。其目的是允许提供者为新消息做准备,并向消息添加任何所需的报头字段。MATLAB调用提供程序开始
方法,但在第一次调用之前getData
.
属性
方法
更多关于
另请参阅
RequestMessage
|MessageBody
|FileProvider
|StringProvider
|JSONProvider
|ImageProvider
|MultipartProvider
|FormProvider
|MultipartFormProvider
|QueryParameter
|ContentConsumer