主要内容

initialize

R2026b

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

配置使用程序以处理新的 HTTP 有效负载

语法

OK = initialize(consumer)

描述

OK = initialize(consumer) 配置 ContentConsumer 以处理新的 HTTP 有效负载。

MATLAB® 在收到可能包含有效负载的 ResponseMessage 的标头后调用 initialize,以配置好使用程序用于处理该有效负载。对于预计不包含有效负载的消息,如 Content-Length 明显为 0 的消息,或在未收到完整标头的错误情况下,则不会调用此方法。

代理使用程序中的 delegateTo 方法也调用 initialize。

如果您要创建 ContentConsumer 的子类,则应该至少检查 ContentType 属性,确认该响应正是您准备处理的类型。您可以覆盖此方法以达到某些目的,例如:

  • 初始化您自己的属性

  • 确定您是否要处理有效负载

  • 处理 Response.StatusCode 不是 OK 的有效负载

是继续执行此方法中的后续初始化还是延迟到调用 start 方法之时由您自己决定。

如果消息没有有效负载,即使调用了 initialize,MATLAB 也可能不会调用使用程序的 start 方法。

如果 Response.StatusCode 为 OK,默认实现将返回 true,否则将返回 false。覆盖此方法的子类应首先调用此超类方法并检查返回值,除非它们要处理的是状态不为 OK 的消息。在此类中调用 putData 的子类必须调用此方法。

使用程序子类应准备好重用于后续消息。MATLAB 会在每个消息之前调用 initialize,然后为每个具有非空有效负载的消息调用 start。一旦 MATLAB 调用 start,将不会再调用 initialize,直到消息结束、抛出异常或者消息处理过程中发生中断为止。所有这些情况都通过调用 putData(uint8.empty) 来指示。

输入参数

全部展开

内容使用程序,指定为 matlab.net.http.io.ContentConsumer 对象。

输出参量

全部展开

指示使用程序是接受还是拒绝消息的有效负载,返回为 true 或 false。

  • 如果 ResponseMessage 的状态代码为 StatusCode.OK,则默认值为 true。

  • 如果 OK 为 true,则说明使用程序接受了消息并开始处理有效负载(如果有)。然后,当有效负载的第一个字节到达后,MATLAB 将调用使用程序的 start 方法,之后再对 putData 进行一次或多次调用,每次调用传递一个数据缓冲区。

  • 如果 OK 为 false,则说明使用程序不想处理该消息,这种情况下将由 MATLAB 处理有效负载,就像未指定任何使用程序一样(这可能意味着将有效负载默认转换为数据)。

如果您覆盖 initialize 方法并拒绝该消息,并且希望中止接收消息而不是以默认方式处理消息,则此方法会抛出错误,而不是返回 false。

属性

Accessprotected

版本历史记录

在 R2018a 中推出