Main Content

complete

类: matlab.net.http.io.ContentProvider
命名空间: matlab.net.http.io

完成 ContentProvider 的 HTTP 标头

语法

complete(provider,URI)

说明

complete(provider,URI) 使用此提供程序所需的标头字段来扩充消息标头。RequestMessage.sendRequestMessage.complete 方法在验证标头或添加任何默认字段之前,以及在此类中调用除 expectedContentLength 之外的其他方法之前调用此方法。

子类可以在这里向标头中添加任何字段(取决于内容),如 Content-Type。有关详细信息,请参阅 Header 属性的说明。

如果消息已完成(即,如果 RequestMessage.Completedtrue),则 RequestMessage 方法不会调用此方法。但是,消息完成后再进行更改将会重置 RequestMessage.Completed 属性,从而允许这些方法再次调用此方法。因此,在调用 start 之前,提供程序应预备好有多次对 complete 的调用。一旦开始调用 start,MATLAB® 将不会在此提供程序中再次调用 complete,除非 reusable 返回 true,指示此提供程序可以重用于其他消息。

如果 ContentProvider 是扩展另一个 ContentProvider 的提供程序,则应首先调用其超类 complete 方法,向 Header 中添加超类所需的标头字段,然后在返回时根据需要修改这些字段。

此方法的默认行为不起作用,但如果此提供程序已启动并且不可重用,则会引发异常。覆盖此方法的提供程序应始终调用其超类。

如果此提供程序不是 Multipart 代理,而且您想要在消息中包含一个 Content-Length 字段(以避免分块传输编码),则您应该在 expectedContentLength 中返回非空值,或者通过实现此方法在 Header 中插入 Content-Length 字段。

此方法不会对 Completed 属性设置为 true 的消息调用,因为此设置通常意味着即使消息多次重新发送,也只对每个消息调用此方法一次。因此,此方法的实现应该执行每个消息只需完成一次的初始化。在数据准备好发送之前不需要完成的成本高昂的初始化应在 start 方法中执行。

输入参数

全部展开

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

统一资源标识符,指定为 matlab.net.URI 对象。

属性

Accessprotected

示例

全部展开

下面是扩展 SuperclassProvider 并添加 HeaderField myFieldContentProvider 的编码模式。

function complete(obj, uri)
            complete@SuperclassProvider(obj, uri);
            field = obj.Header.getFields('My-Field');
            if isempty(field)
                myField = HeaderField('My-Field', value);
                obj.Header = obj.Header.addFields(myField);
            end

版本历史记录

在 R2018a 中推出