complete
类: matlab.net.http.RequestMessage
命名空间: matlab.net.http
验证并完成 HTTP 请求消息而不发送
语法
说明
[ 可像 completedrequest,target] = complete(request,uri)RequestMessage.send 方法一样添加和验证消息标头字段并转换数据,但不会发送消息。complete 采用默认的 HTTPOptions 对象来确定如何完成和验证请求。
可以使用 complete 方法检查请求消息的内容,以实现调试目的。
为了填充和验证 Header 和 RequestLine 属性,此方法将忽略 request 中的 Completed 属性。此方法始终返回修改后的 completedrequest。如果 request 未完成,此方法将出错。您可以根据此行为判断手动完成的请求是否有效。
如果未设置 Completed,则此方法始终转换 request.Body 中的 Data,并将结果存储在 completedrequest.Body.Payload 中,覆盖以前的任何 Payload 内容。这意味着 completedrequest.Body 中的 Data 和 Payload 都包含值。这与 send 方法的行为不同,该方法不会保存 Payload,除非设置了 HTTPOptions.SavePayload。如果消息中包含大量数据,则内存使用量和转换时间可能是个问题。
但是,如果 request.Body 包含 ContentProvider,则 complete 不会调用该提供程序来创建数据。completedrequest.Body 包含相同的 ContentProvider。
输入参数
输出参量
示例
限制
即使在
options中设置了Authenticate属性,已完成的请求也不会添加向服务器或代理进行身份验证可能需要的任何授权标头字段。如果不发送消息,可能无法确定服务器需要的内容。要查看身份验证交换中发送的内容,请检查send方法返回的completedrequest或history参量。
提示
要重复发送同一个请求消息,请发送
completedrequest。否则,如果您发送request,MATLAB 将反复验证该消息。此外,还必须指定target作为 URI,并指定相同的options输入参量。发送completedrequest时,不会更新send方法添加的与时间有关的标头字段,例如 Date。要完成消息而不转换数据,请在调用
complete方法之前将Completed属性设置为true。如果Completed为 true 且request.Body为MessageBody对象,则complete方法假定request.Body.Payload的当前值正是所需要的值,即使为空也是如此。此行为不同于
send方法。如果request.Body.Payload为空,即使Completed为 true,send也会转换并发送非空Body.Data值。
版本历史记录
在 R2016b 中推出