主要内容

显示HTTP消息的进度监视器

这个例子展示了如何实现一个进度监视器,MyProgressMonitor,它会显示一个进度条,显示进出网站的数据。监视器在MATLAB创建的窗口中显示进度条®waitbar函数。它使用集。方向而且集。价值方法来监视方向而且价值属性。

每次MATLAB设置方向财产,MyProgressMonitor创建进度条窗口并显示发送或接收消息。

创建以下内容MyProgressMonitor类文件。

类初始化时间间隔财产措施秒,因为这个例子只发送1mb的数据。短时间间隔允许您观察进度条。

classdefMyProgressMonitor < matlab.net.http.ProgressMonitor属性ProgHandle方向matlab.net.http.MessageType价值uint64NewDirmatlab.net.http.MessageType= matlab.net.http.MessageType.Request结束方法函数obj = MyProgressMonitor obj。区间= .001;结束函数(obj) obj.closeit ();结束函数删除(obj) obj.closeit ();结束函数集。方向(obj, dir)方向= dir;obj.changeDir ();结束函数集。Value(obj, Value) obj。价值=价值;obj.update ();结束结束方法(Access = private)函数更新(obj, ~)%在Value设置时调用进口matlab.net.http。*如果~ isempty (obj.Value)如果isempty (obj.Max)%没有最大值意味着我们不知道长度,所以message%的变化,每次通话值= 0;如果obj。方向== MessageType。请求msg = sprintf('已发送%d字节…', obj.Value);其他的MSG = sprintf('已接收%d字节…', obj.Value);结束其他的%最大已知,更新比例值value = double(obj.Value)/double(obj.Max);如果obj。NewDir == MessageType。请求%消息仅在改变方向时更改如果obj。方向== MessageType。请求msg =“把…”其他的味精=“接受…”结束结束结束如果isempty (obj.ProgHandle)%如果我们没有进度条,第一次显示它obj。ProgHandle =...waitbar(价值、味精、“CreateCancelBtn”...@ (~ ~) cancelAndClose (obj));obj。NewDir = messagtype . response;elseifobj。NewDir == MessageType。请求||isempty (obj.Max)%,改变方向或如果不知道最大,改变信息waitbar(价值,obj。ProgHandle、味精);obj。NewDir = messagtype . response;其他的%没有方向变化,否则只是更新比例值waitbar(价值,obj.ProgHandle);结束结束函数cancelAndClose (obj)调用所需的CancelFcn,然后关闭进度条。%当用户单击取消或关闭窗口时调用。obj.CancelFcn ();obj.closeit ();结束结束函数changeDir (obj ~)当方向被设置或改变时调用。离开进程% bar显示。obj。NewDir = matlab.net.http.MessageType.Request;结束结束方法(访问=私人)函数closeit (obj)通过删除句柄so来关闭进度条% CloseRequestFcn没有被调用,因为waitbar调用了% cancelAndClose(),这将导致递归。如果~ isempty (obj.ProgHandle)删除(obj.ProgHandle);obj。ProgHandle = [];结束结束结束结束

若要启动操作,请指定进度监视器。

opt = matlab.net.http.HTTPOptions(...“ProgressMonitorFcn”@MyProgressMonitor,...“UseProgressMonitor”,真正的);

创建数据。

X = ones(1000000,1,“uint8”);body = matlab.net.http.MessageBody(x);

创建消息。的httpbin.org/put类中接收的数据消息。

url = matlab.net.URI(“http://httpbin.org/put”);方法= matlab.net.http.RequestMethod.PUT;req = matlab.net.http.RequestMessage(method,[],body);

发送信息。

[resp,~,hist] = req.send(url,opt);

另请参阅

|