主要内容

matlab.net.http.io.ContentProvider类

包裹:matlab.net.http.io
超类:手柄matlab.mixin.heterogeneous

用于HTTP消息有效载荷的ContentProvider

描述

一种内容提供商为HTTP提供数据要求询问虽然发送了消息。简单的提供商将数据从MATLAB转换为®输入到字节流。更复杂的提供商可以将数据传送到服务器,同时发送或生成数据,这避免了在消息开始之前在内存中拥有所有数据。

通常,在向Web服务发送数据时(通常在PUT或POST请求中)时,您将创建一个要求询问并以消息体对象在RequestMessage.Body.财产。当您发送消息时RequestMessage.send,MATLAB将该数据转换为要发送到服务器的字节流,基于消息的内容类型和数据类型转换它body.data.。看MessageBody.Data.对于这些转换规则。

而不是插入一个消息体对象进入RequestMessage.Body.属性,您可以创建一个内容提供商反对和插入。然后,当您发送消息时,MATLAB调用方法内容提供商在发送消息时获取要发送的数据缓冲区。

是否插入一个消息体或者内容提供商进入消息,呼叫RequestMessage.send直到已发送整个消息并且已接收到响应或发生错误,不会返回(即,它被阻止)。但与A.内容提供商,MATLAB定期回调提供程序,以获取要发送的数据缓冲区,在发送被阻止期间。在这些回调中,您的内容提供商可以从任何源获取数据,如文件、MATLAB阵列、硬件传感器、MATLAB函数等。提供商的工作是将该数据转换为字节流,以uint8缓冲区的形式发送到web。

内容提供商是一个抽象类,为课堂作者设计为与自己的数据生成器或转换器的子类,或者您可以使用(或子类)一个Matlab提供程序一个,该提供程序从各种源生成数据,而无需编写子类。这些提供程序具有为您提供更灵活地控制数据如何获得和转换的选项,而与将数据直接插入a插入数据时发生的自动转换相比消息体. 使用其中一个内容提供商子类:

即使您不需要流数据,使用这些提供程序中的一个可以简化发送某些类型内容的过程,因为它们将数据从内部形式转换为auint8.流动例如FormProvider.允许您向服务器发送表单响应,在那里您可以方便地将数据表达为一个数组查询参数物体。MultipartformProvider.允许您发送多级表单响应,简化对多部分表单的响应的创建。使用任何内容提供商,您需要了解服务器希望您发送的内容类型。

matlab.net.http.io.contentProvider.ContentProvider.班级是A.手柄班级。

子类作者

最简单的可能内容提供商只需要实现一个getdata.方法根据MATLAB的要求提供数据缓冲区。要使用提供程序,请将其插入身体财产的财产要求询问。在这个例子中,第三个论点要求询问构造函数,答:myprovider.对象,进入身体

Provider = MyProvider;req = matlab.net.http.requestmessage('put',标题,提供商);resp = req.send(URI);

下面是一个例子myprovider.类,该类读取作为参数传递给构造函数的文件名并将其发送到web。为了更好地衡量,我们在文件末尾或删除此提供程序时关闭该文件。

classdef myprovider 
             

MATLAB调用提供者的完成方法在形成要发送的新消息时。目的是允许提供者为新消息做好准备并将任何所需的标题字段添加到邮件中。MATLAB调用提供者的开始方法,但在第一次调用之前发送数据getdata.

特性

展开全部

公共财产

消息或部分的标题字段,指定为一个或多个消息的向量matlab.net.http.HeaderField物体。

此属性仅供子类作者使用。Matlab在调用提供者之前设置此属性完成方法。对于非多级消息,MATLAB将此属性初始化为内容要求,减去任何matlab.net.http.field.genericFields.或空值的字段。这内容提供商使用此属性添加描述要发送的数据的标题字段,或向消息中已有的标题字段添加参数。在一个代理中MultiPartProvider.,MATLAB将此属性初始化为标题字段,即委派提供商打算插入该部件。委派可以修改或更改这些字段。

从提供商返回后完成方法,如果这不是一个多级消息,那么Matlab读取此属性并将其内容合并到标题中要求。这个领域标题名称尚未出现在要求添加到的末尾要求。如果是一个领域标题有一个名称这与一个相同要求,两者都有欠换价值观, 然后:

  • 如果是其中要求是A.通用字段然后忽略一个人标题

  • 如果是其中要求不是一个通用字段,然后用一个替换它标题

如果其中一个或两个具有空价值,然后将该字段从中删除要求它不会作为正常消息完成的一部分添加。

如果这是一个委托MultiPartProvider.,然后是整个内容标题用作部分的标题。多部分代表不能假设要求包含与自己有关的任何字段标题. 提供程序可以通过检查MyDelegator.是A.MultiPartProvider.,但不太可能需要进行此测试。

MATLAB仅读取此属性仅拨打电话提供商完成方法。一旦MATLAB调用,对该数组的更改将被忽略开始

类作者应该意识到他们的子类可能会为此添加字段标题(在他们的完成方法)在呼叫之前完成在他们的超级类中。最好保留这些字段,而不是添加具有相同名称的字段。但是,允许对字段添加参数。例如,超类可以将Charset参数添加到尚未拥有一个的现有内容类型字段。

属性:

Getaccess.
民众
setaccess.
民众

指示是否强制块传输编码,指定为布尔值。此属性仅对子类作者感兴趣,并且仅适用于不是多部分代表的提供者。子类集合for控制是否应使用Chunked Transfer编码发送内容。如果错误的(默认),MATLAB决定是否将内容发送,基于它是否知道在准备好消息时的内容长度:

  • 如果MATLAB知道内容长度(如果消息包含内容长度字段,则是这种情况,或者如果此提供程序预期内容长度方法返回一个数字),然后MATLAB决定是否将其分块发送。

  • 如果MATLAB不知道内容长度(标题中没有内容长度字段和预期内容长度返回空),然后matlab始终发送邮件块。

如果for真的然后,Matlab发送消息块,无论它是否知道内容长度,否则都是已知的长度小于块大小。如果这个属性是真的,然后消息不得包含内容长度字段,因为HTTP不允许块状消息具有内容长度字段。但是,您仍然可以返回非零值预期内容长度方法如果希望MATLAB验证您是否返回预期的数据长度。

当MATLAB选择发送消息块时,每个块的大小等于返回的数据的长度getdata.

MATLAB在调用完成方法,在呼叫之前开始. 它不设置此字段。

属性:

Getaccess.
民众
setaccess.
民众

请求消息要发送,指定为amatlab.net.http.requestmessage.对象

此属性仅由子类作者使用。这RequestMessage.sendRequestMessage.complete.方法将此属性设置为要求询问身体在调用此提供程序中的任何其他方法之前,并在添加任何其他标题字段之前,已放置此提供程序,或在添加任何其他标题字段之前。提供商可以检查此消息以查看原始请求中包含的内容。

委托将此属性与委托卡相同。contentproviders.应该知道,如果它们是委托,则它们不一定提供请求消息的整个主体,因此它们不应该假设此请求中的标题字段与其提供的数据相关。通常,委托将忽略与数据相关的此请求中的标题字段,例如Content-type。

如果提供商希望将任何标题字段添加到此消息,或修改现有的字段,则它应该在其上进行完成通过将这些字段添加到的方法标题财产。来电者的来电者完成要求询问或者委派提供商)确定与这些字段有关。RequestMessage.sendRequestMessage.complete.始终将这些字段复制到标题要求询问。委派提供商可以将字段复制到自己的字段标题属性或将其插入消息中(如MultiPartProvider.)。有关更多信息,请参阅标题财产。

此属性是只读的。

属性:

Getaccess. 民众
setaccess. matlab.net.http.requestmessage.

受保护的属性

内容提供商该提供商正在委派,指定为amatlab.net.http.io.contentProvider.ContentProvider.对象此属性由德比托方法来指示当前委派的提供程序。如果当前没有委派,则该值为空。

完成方法将此属性设置为空。

属性:

Getaccess.
保护
setaccess.
保护

内容提供商该提供商委派的是指定为a的matlab.net.http.io.contentProvider.ContentProvider.对象

如果一个内容提供商委派责任将所有或一部分消息数据发送到另一个提供程序,然后此属性将委派提供程序标识到委托。例如,一个MultiPartProvider.将部分消息委托给其他提供程序,因此它将句柄插入每个委托。否则,MyDelegator.是空的。这德比托方法在委托中设置此属性。

属性:

Getaccess.
保护
setaccess.
保护

方法

展开全部

更多关于

展开全部

在R2018A介绍