主要内容

matlab.net.http.io.ContentProvider类

包:matlab.net.http.io
超类:处理,matlab.mixin.Heterogeneous

ContentProvider HTTP消息负载

描述

一个内容提供者为一个HTTP提供数据RequestMessage而消息被发送。一个简单的从MATLAB提供者转换数据®字节流类型。更复杂的提供者可以流数据到服务器,获取或生成数据同时发送,这避免了需要的所有数据在内存中开始之前的消息。

通常情况下,当将数据发送到一个web服务(通常在一个或POST请求),您将创建一个RequestMessage并插入数据的形式MessageBody对象RequestMessage.Body财产。当你发送消息使用RequestMessage.send,MATLAB将这些数据转换成一个字节流发送到服务器,将基于消息的内容类型和类型的数据Body.Data。看到MessageBody.Data这些转换规则。

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

你是否插入一个MessageBody或者一个内容提供者到消息,调用RequestMessage.send不返回(也就是说,它被阻塞),直到整个消息发送和响应已经收到,或者出现一个错误。但内容提供者,MATLAB定期回调到提供者获取缓冲区的数据发送,期间发送被阻塞。在这些回调,你内容提供者可以从任何来源获取数据如一个文件、一个MATLAB数组,一个硬件传感器、一个MATLAB函数,等。提供者的工作是将这些数据转换成字节流,uint8形式的缓冲区,可以发送到网络。

内容提供者是一个抽象类设计类作者子类自己的数据生成器或转换器,或者您可以使用(或子类)的MATLAB提供商之一为您生成的数据从不同的来源,而无需编写一个子类。这些供应商的选择,给你更灵活的控制数据的获取和转换,而自动转换,将数据直接插入时发生MessageBody。使用一个内容提供者子类:

即使你不需要流数据,使用其中一个供应商可以简化发送特定类型的内容的过程,当他们从内部形成了转换数据uint8流。例如,FormProvider让你发送形式反应到服务器,您可以方便地表达数据的数组QueryParameter对象。MultipartFormProvider让你送多部分反应形式,简化反应多部分形式的创造。使用任何内容提供者,您需要了解的内容类型服务器希望你发送。

matlab.net.http.io.ContentProvider类是一个处理类。

子类的作者

尽可能简单的内容提供者只需要实现一个getDataMATLAB方法提供缓冲的数据请求。使用你的提供者,将它插入身体财产的RequestMessage。在这个例子中,第三个参数RequestMessage构造函数,MyProvider对象,进入身体:

提供者= MyProvider;要求= matlab.net.http.RequestMessage(‘把’,头,供应商);resp = req.send (uri);

这是一个例子MyProvider类读取的文件名作为参数传入构造函数并将其发送到web。此外,我们最后关闭文件或当这个提供者删除。

classdef MyProvider < matlab.net.http.io.ContentProvider属性文件标识双头方法函数obj = MyProvider(名字)obj。文件标识= fopen(名称);结束函数[数据,停止]= getData (obj,长度)数据,len =从文件中读(obj。文件标识、长度、“* uint8”);停止= len <长度;如果(停止)文件关闭(obj.FileID);obj。文件标识= [];结束结束函数删除(obj)如果~ isempty (obj.FileID)文件关闭(obj.FileID);obj。文件标识= [];端端端端

MATLAB调用提供者的完整的方法时形成一个新消息发送。目的是让供应商准备一个新的消息,并将所需的头字段添加到消息。MATLAB调用提供者的开始方法是时候发送数据,但在第一次调用getData

属性

全部展开

公共属性

消息头字段或部分,指定为一个向量的一个或多个matlab.net.http.HeaderField对象。

这个属性只是作者使用的子类。MATLAB调用提供者的前设置这个属性完整的方法。对于non-multipart消息,MATLAB初始化该属性的内容Request.Header-任何matlab.net.http.field.GenericFields或empty-valued字段。的内容提供者使用这个属性来添加标题字段描述发送的数据,或将参数添加到已经在消息头字段。在一个委托MultipartProvider,MATLAB初始化这个属性的头字段授权提供者打算插入部分。代表们可以修改或改变这些字段。

从提供者的回来完整的方法,如果这不是一个多部分消息,MATLAB读取这个属性和合并其内容的标题请求。在这个领域的名字不已经出现Request.Header被添加到年底吗Request.Header。如果一个字段有一个的名字这是一样的Request.Header,都有非空的,那么:

  • 如果一个在Request.Header是一个GenericField,然后忽略的

  • 如果一个在Request.Header不是一个GenericField,然后把它换成一个

如果一方或双方有一个空的价值,然后删除Request.Header它不像正常的消息的一部分添加完成。

如果这是一个委托MultipartProvider,那么它的全部内容作为标题的部分。多部分代表不能假设Request.Header包含有关自己的任何字段。提供者可以确定这是一个多部分委托是否通过检查MyDelegator是一个MultipartProvider这个测试,尽管不太可能是必要的。

MATLAB读取这个属性只在从调用提供者的回报完整的方法。修改这个数组一旦MATLAB调用将被忽略开始

类作者应该意识到他们的子类可能添加字段(在他们完整的方法)之前调用完整的超类。最好保护等领域,而不是添加字段具有相同的名称。然而,将一个参数添加到字段是允许的。例如,一个超类可以将一个字符集参数添加到现有的内容类型字段不已经有一个了。

属性:

GetAccess
公共
SetAccess
公共

表明是否强迫分块传输编码,指定为布尔。这个属性是作者感兴趣的子类,只适用于供应商,不是多部分代表。子类集ForceChunked控制内容是否应该发送使用分块传输编码。如果(默认),MATLAB决定是否发送内容分块,根据内容长度是否知道消息是准备发送时:

  • 如果MATLAB知道内容长度(如果消息包含内容长度字段,或者如果这个提供者的expectedContentLengthMATLAB方法返回一个数字),然后决定是否寄分块。

  • 如果MATLAB不知道内容长度(没有在标题和内容长度字段expectedContentLength返回空的),然后用MATLAB总是分块发送的消息。

如果ForceChunked真正的MATLAB发送消息,然后分块不管它知道内容的长度,除非已知的长度小于块大小。如果此属性真正的,那么消息必须不包含内容长度字段,因为HTTP不允许分块消息内容长度字段。然而,你仍然可以返回一个非零值expectedContentLength方法如果你希望MATLAB验证返回预期的数据长度。

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

MATLAB调用后读取该值完整的方法,在调用之前开始。它没有设置这个字段。

属性:

GetAccess
公共
SetAccess
公共

请求消息发送,指定为一个matlab.net.http.RequestMessage对象。

作者使用这个属性只有通过子类。的RequestMessage.sendRequestMessage.complete设置该属性的方法RequestMessage在谁的身体这个供应商已经放置,在这个提供程序调用其他方法之前,在添加任何额外的头字段或验证消息。提供者可以检查这个消息,看看原始请求中包含的是什么。

代表们看到这个属性相同的值作为全权代表。内容提供者应该意识到,如果他们的代表,他们不一定是提供整个身体的请求消息,所以他们不应该假设在这个请求头字段相关的数据提供。通常,代表应该忽略这个请求头字段相关的数据,如内容类型。

如果提供者希望添加任何消息头字段,或者修改现有的,它应该这样做的完整的通过将这些字段添加到方法财产。调用者的完整的(RequestMessage或授权提供者)决定如何处理这些字段。RequestMessage.sendRequestMessage.complete总是将这些字段复制到RequestMessage。授权提供者可以复制自己的字段房地产或将它们插入到消息(如的情况MultipartProvider)。有关更多信息,请参见财产。

这个属性是只读的。

属性:

GetAccess 公共
SetAccess matlab.net.http.RequestMessage

受保护的属性

内容提供者这个供应商是委托,作为指定matlab.net.http.io.ContentProvider对象。这个属性被设置在调用提供者(在委托)delegateTo方法来表示当前授权提供者。如果没有当前代表团,值是空的。

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

属性:

GetAccess
受保护的
SetAccess
受保护的

内容提供者委托给这个供应商,指定为一个matlab.net.http.io.ContentProvider对象。

如果一个内容提供者代表负责发送消息的全部或部分数据到另一个提供者,然后这个属性标识授权提供者委托。例如,一个MultipartProvider代表的部分消息到其他供应商,所以在每个委托它插入一个句柄。否则,MyDelegator是空的。的delegateTo方法设置这个属性的委托。

属性:

GetAccess
受保护的
SetAccess
受保护的

方法

全部展开

更多关于

全部展开

介绍了R2018a