主要内容

matlab.net.http.io.MultipartFormProvider类

包:matlab.net.http.io
超类:matlab.net.http.io.MultipartProvider

ContentProvider发送多部分/表单数据消息

描述

使用此提供程序将多部分表单发送到服务器。多部分表单是包含一系列部分的消息,其中每个部分都有一个“控件名称”和它的数据。数据可以是任何允许的类型RequestMessage.Body.Data或另一个内容提供者

一些服务器需要相同名称下的多个部件在嵌套的多部件/混合部件中。要发送嵌套部件,请将部件包装在MultipartProvider.例如,要发送HTML 4.01规范中关于表单数据的第17章末尾所描述的消息:

fps = FileProvider([“中”,“file2.gif”]);% get数组的提供商mp = MultipartProvider(fps);formProvider = MultipartFormProvider(“submit-name”、“拉里”、“文件”,mp);要求= RequestMessage(“把”,[],formProvider);req.send (uri);

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

创建

描述

提供者= MultipartFormProvider (的名字,创建“多部分/格式”由一个或多个名称-部件对参数指定的内容。部分表单数据是否包含的名字和它的内容。的部分参数可以是。支持的任何类型金宝appMultipartProvider,包括其他内容提供者对象。

如果一个部分是一个数组,它等价于重复的名字,数组中的每个元素。例如,语句:

MultipartFormProvider(“名字”,FileProvider ([file1 file2 "]))

等价于:

MultipartFormProvider(“名字”,FileProvider (file1),“名字”,FileProvider (file2));

属性

全部展开

公共属性

部件名称,作为字符串指定。

属性:

GetAccess
公共
SetAccess
公共

消息体的一部分,指定为包含一个或多个以下值的单元格数组:

内容提供者对象

MultipartProvider将部件的创建委托给指定的提供程序(称为委托),调用其完整方法来获取关于部件及其的头信息getData方法获取数据。委托的属性用于部件的标题。的任何子类内容提供者可以在这里指定。通常,委托不指定内容长度,也不实现expectedContentLength方法,因为部分的结尾是由边界字符串而不是头字段指定的。如果该方法实现为返回一个非空值,则该值仅用于强制内容的长度,而不是创建content - length字段。

RequestMessage对象

MultipartProvider发送身体RequestMessage的部分。如果身体的有效载荷属性的设置,则将其用于原始有效负载。否则身体的数据属性的内容类型或内容类型字段转换,如MessageBody。数据.如果您有数据要发送,并且想要利用MATLAB对该数据的默认处理,则此选项非常有用®通常在发送一个RequestMessage.它允许您在请求中指定自定义报头字段作为部件的字段并控制数据如何转换,而不需要写内容提供者子类。的RequestMessage。RequestLine属性将被忽略。

MessageBody对象

MessageBody处理过程与在RequestMessage没有Content-Type字段的。如果根据类型对数据进行默认处理就足够了,并且不需要为部件指定任何自定义报头字段,则此选项非常有用。MATLAB根据数据的类型在部件中插入一个Content-Type字段。看到MessageBody。数据转换规则。

的数组内容提供者RequestMessage和/或MessageBody对象

这将数组中的每个元素视为一个部分。不是单元格数组。

句柄getData方法

此方法必须具有的签名ContentProvider.getData.在本例中,部件的Content-Type被设置为“应用程序/八进制”,所以这个选项对于发送二进制数据很有用。使用此选项时,不能为部件指定任何自定义报头字段。

其他类型

如果该类型不匹配这些类型中的任何一个,并且不是函数句柄,那么它将被视为数据财产的MessageBody.请参阅以下说明MessageBody类型。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的

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

此属性仅供子类作者使用。MATLAB在调用提供程序之前设置这个属性完整的方法。对于非多部分消息,MATLAB将此属性初始化为请求。头-任何matlab.net.http.field.GenericFields或empty-valued字段。的内容提供者使用此属性可添加描述要发送的数据的报头字段,或向消息中已经存在的报头字段添加参数。的委托中MultipartProvider, MATLAB将此属性初始化为委托提供程序打算为部件插入的头字段。委托可以修改或更改这些字段。

从供应商返回时完整的方法,如果这不是一个多部分消息,则MATLAB读取此属性并将其内容合并到请求.在这个领域的名字还没有出现的请求。头都加到末尾了吗请求。头.如果这是一个字段有一个的名字这和1 in是一样的请求。头,两者都是非空的,那么:

  • 如果那个人请求。头是一个GenericField,然后忽略其中一个

  • 如果那个人请求。头不是一个GenericField,然后把它替换成里面的那个

如果其中一个或两个都有空价值,则删除该字段请求。头而且它不是作为正常消息完成的一部分添加的。

如果这是a的委托MultipartProvider,然后是这个的全部内容用作零件的标头。多部分委托不能这样假设请求。头包含与自己相关的任何字段.提供程序可以通过检查是否为多部分委托来确定它是否为多部分委托MyDelegator是一个MultipartProvider,尽管不太可能需要这种测试。

MATLAB只在调用提供程序返回时读取此属性完整的方法。对这个数组的更改在MATLAB调用时被忽略开始

类作者应该意识到,他们的子类可能已经在其中添加了字段(在他们完整的方法)之前调用完整的超类。最好保留这些字段,而不要添加名称相同的字段。但是,向字段添加参数是允许的。例如,超类可以向还没有字符集参数的现有Content-Type字段添加字符集参数。

属性:

GetAccess
公共
SetAccess
公共

指示是否强制分块传输编码,指定为布尔值。此属性仅对子类作者感兴趣,且仅适用于非多部分委托的提供程序。子类集ForceChunked控制是否应使用分块传输编码发送内容。如果(默认),MATLAB根据是否知道消息准备发送时的内容长度来决定是否发送分块的内容:

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

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

如果ForceChunked真正的,则不管是否知道内容长度,MATLAB都将消息分块发送,除非已知长度小于块大小。如果这个属性是真正的,则消息必须不包含Content-Length字段,因为HTTP不允许分块消息具有Content-Length字段。属性中仍然可以返回非零值expectedContentLength方法,如果您希望MATLAB验证您返回的是预期的数据长度。

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

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

属性:

GetAccess
公共
SetAccess
公共

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

此属性仅供子类作者使用。的RequestMessage.sendRequestMessage.complete方法将此属性设置为RequestMessage在谁的身体在调用该提供程序中的任何其他方法之前,以及在添加任何额外的报头字段或验证消息之前,已经放置了该提供程序。提供者可以检查此消息,以查看原始请求中包含的内容。

委托会看到与委托相同的属性值。内容提供者应该意识到,如果它们是委托,它们不一定提供请求消息的整个主体,所以它们不应该假设这个请求中的报头字段与它们提供的数据相关。通常,委托应该忽略请求中与数据相关的报头字段,例如Content-Type。

如果提供程序希望在此消息中添加任何报头字段,或者修改现有的报头字段,它应该在其完整的方法将这些字段添加到财产。调用者的完整的RequestMessage或委托提供程序)决定如何处理这些字段。RequestMessage.sendRequestMessage.complete总是将这些字段复制到RequestMessage.委托提供程序可以将字段复制到自己的属性或将它们插入到消息中(如MultipartProvider).有关更多信息,请参见财产。

此属性是只读的。

属性:

GetAccess 公共
SetAccess matlab.net.http.RequestMessage

受保护的属性

提供程序子类型,指定为字符串。默认值“混合”添加设置为的内容类型头“多部分/混合”,再加上适当的参数。类的子类可以在构造函数或完整的方法。此值出现在后面的Content-Type中“多部分/”

属性:

GetAccess
受保护的
SetAccess
受保护的

内容提供者该提供程序委托给的对象,指定为matlab.net.http.io.ContentProvider对象。属性在调用提供程序(委托程序)中设置此属性delegateTo方法以指示当前的委托提供程序。如果当前没有委托,则该值为空。

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

属性:

GetAccess
受保护的
SetAccess
受保护的

内容提供者委托给该提供者的,指定为matlab.net.http.io.ContentProvider对象。

如果一个内容提供者委托将全部或部分消息数据发送到另一个提供程序的责任,然后此属性标识委托提供程序到该委托。例如,一个MultipartProvider将消息的一部分委托给其他提供程序,因此它在每个委托中插入自己的句柄。否则,MyDelegator是空的。的delegateTo方法在委托中设置此属性。

属性:

GetAccess
受保护的
SetAccess
受保护的

方法

全部展开

更多关于

全部展开

介绍了R2018a