主要内容

expectedContentLength

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

ContentProvider的内容长度

语法

length = expectedContentLength(provider)
length = expectedContentLength(provider,force)

描述

长度= expectedContentLength (提供者以字节为单位返回预期的内容长度。此方法旨在被想要向MATLAB报告其内容长度的子类覆盖®RequestMessage.sendRequestMessage.complete调用此方法并使用返回值来设置的内容长度头字段RequestMessage。如果消息已经有一个带有值的Content-Length字段,并且长度非空,则其值必须等于该Content-Length字段中的值。长度可能为0表示没有内容,在这种情况下,第一次调用getData应空返回数据停止= true

调用这个方法RequestMessage.sendRequestMessage.complete在委托中delegateTo。MATLAB将其称为ContentProvider.complete之前,ContentProvider.start。如果在调用之前调用此方法完整的,则返回值可能无效,因为提供者在没有看到控制转换的所有报头字段的情况下不一定能确定其转换数据的长度。

如果您不选择在消息中使用Content-Length头字段(消息是使用分块传输编码发送的),那么重写此方法并返回非空值的唯一原因是作为双重检查,以确保提供程序返回预期的数据长度。

在已知数据长度的情况下(即,当此方法返回一个数字或Content-Length字段非空时),此提供程序的getData方法必须返回停止= true在准确返回字节数之后。MATLAB总是调用getData反复地,即使长度= 0,直到getData返回停止= true。在长度未知的情况下,如果这是顶级提供程序(不是多部分委托),则MATLAB使用分块传输编码发送内容,并且提供程序可以在设置之前自由返回任何长度的数据,包括没有停止= true

你应该回来[]如果您事先不知道数据的长度,或者计算数据的长度会很耗时。允许任何消息使用分块传输编码是无害的(也是完全正常的),即使您知道其长度。如果此提供程序是多部分委托,则非空返回值仅用于在case中强制执行错误getData返回更多或更少字节,并且不会导致在部件中出现Content-Length报头字段。看到MultipartProvider了解更多信息。

长度= expectedContentLength (提供者,如果真正的,要求您返回数据的长度,必要时计算它,即使您不返回[],除非无法计算长度。如果返回这个数字需要长时间的计算或生成消息中的所有数据,则应该缓存数据,以便在后续操作中不必重新计算它getData调用。的参数提供给必须提前知道数据长度的子类使用。MATLAB在调用此方法时从不设置此选项,并且如果您知道您的提供程序从未用作可能设置此选项的子类,那么您可以忽略论点。

这个方法的调用者[]作为对设置的响应真正的可以将其视为错误,或者以与未知长度的内容兼容的方式行事。

指定如果需要生成所有数据才能进行计算,那么流(在生成数据时发送数据)的好处会否被否定长度,所以这个选项最好用于特殊情况,例如调试,或者当已知数据长度很小的时候。

的用法的例子是一个假设CompressProvider这可以选择性地压缩任何其他提供者的输出,但仅当该输出大于某个长度时(因为压缩对于短消息是低效的)。要确定长度,请使用CompressProvider需要调用其他提供者的expectedContentLength设置为真正的。如果其他提供商是流媒体JSONProviderexpectedContentLength通常回报[],因为确定JSON字符串的长度需要处理所有的输入数据。与设置为真正的,JSONProviderexpectedContentLength方法处理所有数据(可能在内部缓存输出字符串以供其putData方法),并返回该字符串的长度。

输入参数

全部展开

内容提供程序,指定为matlab.net.http.io.ContentProvider对象。

指示是否返回数据的长度,指定为真正的

如果真正的,expectedContentLength必须返回数据的长度,必要时计算它,即使您将返回[],除非无法计算长度。如果返回这个数字需要长时间的计算或生成消息中的所有数据,则应该缓存数据,以便在后续操作中不必重新计算它getData调用。的参数提供给必须提前知道数据长度的子类使用。MATLAB在调用此方法时从不设置此选项,并且如果您知道您的提供程序从未用作可能设置此选项的子类,那么您可以忽略论点。

这个方法的调用者[]作为对设置的响应真正的可以将其视为错误,或者以与未知长度的内容兼容的方式行事。

指定如果需要生成所有数据才能进行计算,那么流(在生成数据时发送数据)的好处会否被否定长度因此,此选项最适合用于特殊情况,例如调试或已知数据长度很小的情况。

输出参数

全部展开

期望的内容长度,以字节为单位。如果不重写此方法,则expectedContentLength返回[]。MATLAB确定的内容长度如下。

  • 如果这内容提供者不是多部分委托(参见MultipartProvider),并且消息有一个具有非空值(插入到原始消息中)的Content-Length字段RequestMessage或者添加到财产由完整的方法),那么Content-Length字段就是内容的长度。

  • 如果没有Content-Length字段(或者此提供程序是多部分委托),则负载(或部分中的数据)在此提供程序结束时结束getData方法设置停止返回值。在这种情况下,不需要指定内容长度。

属性

访问 受保护的

版本历史

在R2018a中引入