显示HTTP消息的进度监控
这个例子展示了如何实现一个进度监控,MyProgressMonitor
,显示一个进度条进行数据转移到从一个网站。监视器在窗口中显示一个进度条由MATLAB®waitbar
函数。它使用set.Direction
和set.Value
方法监测的变化方向
和价值
属性。
每次MATLAB设置方向
财产,MyProgressMonitor
窗口创建一个进度条,显示发送或接收消息。
创建以下MyProgressMonitor
类文件。
类初始化时间间隔
财产措施
秒,因为示例仅发送1 MB的数据。小间隔允许您观察进度条。
classdefMyProgressMonitor < matlab.net.http.ProgressMonitor属性ProgHandle方向matlab.net.http.MessageType价值uint64NewDirmatlab.net.http.MessageType= matlab.net.http.MessageType.Request结束方法函数obj = MyProgressMonitor obj。间隔=措施;结束函数(obj) obj.closeit ();结束函数删除(obj) obj.closeit ();结束函数set.Direction (obj, dir) obj。方向= dir;obj.changeDir ();结束函数set.Value (obj,价值)obj。值=价值;obj.update ();结束结束方法(访问=私人)函数更新(obj, ~)%时调用值设置进口matlab.net.http。*如果~ isempty (obj.Value)如果isempty (obj.Max)%没有最大意味着我们不知道长度,所以消息%的变化在每一个电话值= 0;如果obj。= = MessageType方向。请求味精= sprintf (“送% d字节…”,obj.Value);其他的味精= sprintf (“收到% d字节…”,obj.Value);结束其他的%最大,更新值成比例值=双(obj.Value) /双(obj.Max);如果obj。NewDir = = MessageType.Request%的消息只在改变方向变化如果obj。= = MessageType方向。请求味精=“把…”;其他的味精=“接受…”;结束结束结束如果isempty (obj.ProgHandle)%如果我们没有一个进度条,显示为第一次obj。ProgHandle =…waitbar(价值、味精、“CreateCancelBtn”,…@ (~ ~)cancelAndClose (obj));obj。NewDir = MessageType.Response;elseifobj。NewDir = = MessageType.Request||isempty (obj.Max)%的变化方向或如果没有最大,变化的信息waitbar(价值,obj。ProgHandle、味精);obj。NewDir = MessageType.Response;其他的%没有其他方向变化只是更新值成比例waitbar(价值,obj.ProgHandle);结束结束函数cancelAndClose (obj)%调用所需的CancelFcn然后关闭我们的进度条。%这叫做当用户点击取消或关闭窗口。obj.CancelFcn ();obj.closeit ();结束结束函数changeDir (obj ~)%设置或更改时调用方向。离开这个进展%栏显示。obj。NewDir = matlab.net.http.MessageType.Request;结束结束方法(访问=私人)函数closeit (obj)%关闭进度条的删除处理% CloseRequestFcn不叫,因为waitbar调用% cancelAndClose(),它会导致递归。如果~ isempty (obj.ProgHandle)删除(obj.ProgHandle);obj。ProgHandle = [];结束结束结束结束
开始操作,指定进度监控。
选择= matlab.net.http.HTTPOptions (…“ProgressMonitorFcn”@MyProgressMonitor,…“UseProgressMonitor”,真正的);
创建数据。
x = 1 (1000000 1“uint8”);身体= matlab.net.http.MessageBody (x);
创建消息。的httpbin.org/put
服务返回接收数据把
消息。
url = matlab.net.URI (“http://httpbin.org/put”);方法= matlab.net.http.RequestMethod.PUT;要求= matlab.net.http.RequestMessage(方法、[]、身体);
发送消息。
[职责,~,嘘]= req.send (url,选择);