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 中推出