包:matlab.net.http.io
超类:处理
,matlab.mixin.Heterogeneous
ContentProvider HTTP消息负载
一个内容提供者为一个HTTP提供数据RequestMessage
而消息被发送。一个简单的从MATLAB提供者转换数据®字节流类型。更复杂的提供者可以流数据到服务器,获取或生成数据同时发送,这避免了需要的所有数据在内存中开始之前的消息。
通常情况下,当将数据发送到一个web服务(通常在一个或POST请求),您将创建一个RequestMessage
并插入数据的形式MessageBody
对象RequestMessage.Body
财产。当你发送消息使用RequestMessage.send
,MATLAB将这些数据转换成一个字节流发送到服务器,将基于消息的内容类型和类型的数据Body.Data
。看到MessageBody.Data
这些转换规则。
而不是插入一个MessageBody
对象进RequestMessage.Body
属性,您可以创建一个内容提供者
对象和插入。然后,当你发送消息,MATLAB调用方法内容提供者
获取缓冲区的数据发送,发送的消息。
你是否插入一个MessageBody
或者一个内容提供者
到消息,调用RequestMessage.send
不返回(也就是说,它被阻塞),直到整个消息发送和响应已经收到,或者出现一个错误。但内容提供者
,MATLAB定期回调到提供者获取缓冲区的数据发送,期间发送被阻塞。在这些回调,你内容提供者
可以从任何来源获取数据如一个文件、一个MATLAB数组,一个硬件传感器、一个MATLAB函数,等。提供者的工作是将这些数据转换成字节流,uint8形式的缓冲区,可以发送到网络。
内容提供者
是一个抽象类设计类作者子类自己的数据生成器或转换器,或者您可以使用(或子类)的MATLAB提供商之一为您生成的数据从不同的来源,而无需编写一个子类。这些供应商的选择,给你更灵活的控制数据的获取和转换,而自动转换,将数据直接插入时发生MessageBody
。使用一个内容提供者
子类:
即使你不需要流数据,使用其中一个供应商可以简化发送特定类型的内容的过程,当他们从内部形成了转换数据uint8
流。例如,FormProvider
让你发送形式反应到服务器,您可以方便地表达数据的数组QueryParameter
对象。MultipartFormProvider
让你送多部分反应形式,简化反应多部分形式的创造。使用任何内容提供者
,您需要了解的内容类型服务器希望你发送。
的matlab.net.http.io.ContentProvider
类是一个处理
类。
尽可能简单的内容提供者
只需要实现一个getData
MATLAB方法提供缓冲的数据请求。使用你的提供者,将它插入身体
财产的RequestMessage
。在这个例子中,第三个参数RequestMessage
构造函数,MyProvider
对象,进入身体
:
提供者= MyProvider;要求= matlab.net.http.RequestMessage(‘把’,头,供应商);resp = req.send (uri);
这是一个例子MyProvider
类读取的文件名作为参数传入构造函数并将其发送到web。此外,我们最后关闭文件或当这个提供者删除。
classdef MyProvider < matlab.net.http.io.ContentProvider属性文件标识双头方法函数obj = MyProvider(名字)obj。文件标识= fopen(名称);结束函数[数据,停止]= getData (obj,长度)数据,len =从文件中读(obj。文件标识、长度、“* uint8”);停止= len <长度;如果(停止)文件关闭(obj.FileID);obj。文件标识= [];结束结束函数删除(obj)如果~ isempty (obj.FileID)文件关闭(obj.FileID);obj。文件标识= [];端端端端
MATLAB调用提供者的完整的
方法时形成一个新消息发送。目的是让供应商准备一个新的消息,并将所需的头字段添加到消息。MATLAB调用提供者的开始
方法是时候发送数据,但在第一次调用getData
。
RequestMessage
|MessageBody
|FileProvider
|StringProvider
|JSONProvider
|ImageProvider
|MultipartProvider
|FormProvider
|MultipartFormProvider
|QueryParameter
|ContentConsumer