主要内容

matlab.net.http.io.MultipartFormProvider类

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

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

描述

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

一些服务器要求相同名称下的多个部件位于嵌套的多部件/混合部件中。要发送嵌套部件,请将部件封装在MultipartProvider。例如,发送一个在HTML 4.01表单数据规范的第十七章最后描述的消息:

fps = FileProvider(["file1.txt","file2.gif"]);mp = MultipartProvider(fps);formProvider = MultipartFormProvider("submit-name","Larry","files",mp);req = RequestMessage('put',[],formProvider);req.send (uri);

matlab.net.http.io.MultipartFormProvider类是a处理类。

创建

描述

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

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

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

相当于:

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

属性

全部展开

公共属性

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

属性:

GetAccess
公共
SetAccess
公共

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

内容提供者对象

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

RequestMessage对象

MultipartProvider发送身体RequestMessage作为角色。如果身体有效载荷属性,则将其用于原始有效负载。否则身体的数据属性中的Content-Type字段或其类型进行转换,如下所述MessageBody。数据。如果您有数据要发送,并且希望利用MATLAB对该数据的默认处理,则此选项非常有用®通常在发送RequestMessage。它允许您在请求中指定要用作部件的自定义头字段并控制如何转换数据,而无需编写内容提供者子类。的RequestMessage。RequestLine属性被忽略。

MessageBody对象

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

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

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

句柄getData方法

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

其他类型吗?

如果类型与这些类型中的任何一个都不匹配,并且不是函数句柄,则将其视为存在于数据a的性质MessageBody。请参阅以下描述MessageBody类型。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的

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

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

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

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

  • 如果是在请求。头不是。GenericField,然后把它换成

如果其中一个或两个都是空的价值,然后将字段从请求。头并且它不是作为正常消息完成的一部分添加的。

如果这是a的委托MultipartProvider,然后这个的全部内容用作部件的标题。多成员代表不能这样认为请求。头包含属于它们自己的任何字段。提供程序可以通过检查是否为多部分委托来确定它是否是MyDelegator是一个MultipartProvider尽管这种测试不太可能被需要。

MATLAB仅在调用提供程序返回时读取此属性完整的方法。一旦MATLAB调用,对该数组的更改将被忽略开始

类作者应该意识到,他们的子类可能已经向this添加了字段(在他们完整的方法),然后调用完整的在它们的超类中。最好保留这些字段,不要添加具有相同名称的字段。但是,允许向字段添加参数。例如,超类可以向没有字符集参数的现有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

函数后读取该值完整的方法,在调用之前开始。它不设置此字段。

属性:

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报头集“多部分/混合”到消息,加上适当的参数。子类可以在构造函数或类中修改此值完整的方法。该值出现在后面的Content-Type中“多部分/”

属性:

GetAccess
受保护的
SetAccess
受保护的

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

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

属性:

GetAccess
受保护的
SetAccess
受保护的

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

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

属性:

GetAccess
受保护的
SetAccess
受保护的

方法

全部展开

更多关于

全部展开

版本历史

在R2018a中引入