主要内容

matlab.net.http.io.StringProvider类

包裹:matlab.net.http.io
超类:matlab.net.http.io.ContentProvider

内容提供者发送MATLAB字符串

描述

使用一个字符串提供者对象发送一个MATLAB®数组中的字符串或字符向量请求消息.默认情况下,如果aRequestMessage.Body.Data属性包含字符串或字符向量,然后根据消息中Content Type字段指定或暗示的编码(字符集)将其转换为二进制,因此在MATLAB可以确定使用何种编码的情况下,通常不需要使用此对象发送纯文本。

在a中使用这个对象请求。身体属性发送使用字符集编码的字符串,该字符集可能与MATLAB将在头文件中用于Content-Type的字符集不同。属性中指定该字符集内容提供者构造函数或通过设置字符集财产。如果消息不包含Content-Type,此提供程序将添加一个指定“文本/普通”和指定的字符集。

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

创建

描述

例子

提供者= StringProvider构造一个字符串提供者数据属性中指定的值编码的字符集财产。在发送包含此提供程序的消息之前设置这些属性。

provider=StringProvider(数据,字符集)构造一个字符串提供者发送指定的数据使用指定的字符集.构造函数设置数据属性的值数据字符集属性的值字符集.这个字符集参数是可选的。

属性

全部展开

公共属性

要发送的数据,指定为字符串或字符向量。这是提供给构造函数的Data的值。您还可以在调用构造函数之后或在子类中直接设置此属性。

子类作者可以随时将此属性设置为新数据。下一个呼叫getData将该数据转换为getData长度论点。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的

用于编码的字符集,指定为字符向量。

属性:

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不知道内容长度(标头和expectedContentLength返回空),然后MATLAB总是发送分块的消息。

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

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

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

属性:

GetAccess
公共
SetAccess
公共

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

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

委托人看到的此属性值与委托人看到的值相同。内容提供者应该知道,如果他们是委托,他们不一定提供请求消息的整个主体,因此他们不应该假设此请求中的头字段与他们提供的数据相关。通常,代理应该忽略此请求中与数据相关的头字段,例如内容类型。

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

此属性是只读的。

属性:

GetAccess 公共
SetAccess matlab.net.http.RequestMessage

受保护的属性

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

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

属性:

GetAccess
受保护的
SetAccess
受保护的

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

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

属性:

GetAccess
受保护的
SetAccess
受保护的

方法

全部展开

例子

全部折叠

下面的代码准备发送字符串的消息“myText”使用内容类型“文本/普通”使用Shift_JIS编码发送到服务器:

周大福= ContentTypeField (MediaType (“文本/普通”,“字符集”,“Shift_JIS”);r=请求消息(“把”、周大福StringProvider (“myText”));

在本例中,标头没有内容类型字段,因此字符串提供者插入一个基于构造函数参数的函数。

r=请求消息(“把”[], StringProvider (“myText”,“Shift_JIS”));显示(r.complete (“www.someurl.com”))
PUT / HTTP/1.1 Host: www.someurl.com Content-Type: text/plain;charset=Shift_JIS User-Agent: MATLAB/9.2.0.512567 (R2017b)连接:关闭日期:周五,2017年6月20日14:26:42 GMT

在本例中,指定给字符串提供者用于转换数据的构造函数与Content-Type字段中的字符集不同。字符串提供者不会更改已经指定字符集的现有Content-Type字段,因此服务器假设数据是US-ASCII,而不是Shift-JIS。

周大福= ContentTypeField (MediaType (“文本/普通”,“字符集”,“us - ascii”));r=请求消息(“把”、周大福StringProvider (“myText”,“Shift_JIS”));

在本例中,MATLAB将一个字符集参数添加到没有指定字符集的Content-Type字段,因为默认值为“应用程序/json”是UTF-8,与Shift_JIS不同。

周大福= ContentTypeField (MediaType (“应用程序/json”));r=请求消息(“把”、周大福StringProvider (“myText”,“Shift_JIS”));显示(r.complete (“www.someurl.com”))
PUT/HTTP/1.1主机:www.someurl.com内容类型:application/json;charset=Shift_JIS用户代理:MATLAB/9.2.0.512567(R2017b)连接:关闭日期:2017年6月20日星期五14:26:42 GMT

当没有Content-Type报头字段且没有指定字符集时字符串提供者, MATLAB使用启发式来找到能够表示数据的“最小”编码,其中之一包括平台的默认编码。在这个例子中,当在Windows上运行时,Unicode®字符串中的字符在Windows-1252范围内,但在US-ASCII范围外,因此使用Windows-1252:

r=请求消息(“把”[], StringProvider (“€abc”));显示(r.complete (“www.someurl.com”))
PUT/HTTP/1.1主机:www.someurl.com内容类型:text/plain;charset=windows-1252用户代理:MATLAB/9.2.0.512567(R2017b)连接:关闭日期:2017年6月20日星期五14:26:42 GMT

在本例中,Content-Type字段指定“应用程序/json”没有字符集,并且未指定任何字符集字符串提供者.的默认字符集“应用程序/json”是UTF-8,字符串提供者使用它来转换,并且不在Content-Type字段中显式指定字符集。

周大福= ContentTypeField (MediaType (“应用程序/json”));r=请求消息(“把”、周大福StringProvider (“myText”));%使用utf - 8

更多关于

全部展开

R2018a中引入