针对 MATLAB 测试客户端数据集成
此示例说明如何使用 MATLAB® Production Server™ 的开发版本测试 RESTful API 或 Java® 客户端以将其部署到 MATLAB Production Server MATLABCompiler SDK™ 包含 MATLAB Production Server 的开发版本,用于在将应用程序代码和 Excel® 加载项部署到 Web 应用程序和企业系统之前对其进行测试和调试。
为了测试目的,您将创建并使用一个名为 addmatrix
的 MATLAB 函数,该函数接受两个数字矩阵作为输入并返回它们的总和作为输出。您可以通过点击 Production Server 编译器中的测试客户端按钮来访问本地测试服务器。
创建 MATLAB 函数
编写一个名为
addmatrix
MATLAB 函数,该函数接受两个数字矩阵作为输入并返回它们的和作为输出。将此文件保存为addmatrix.m
。function a = addmatrix(a1, a2) a = a1 + a2;
在 MATLAB 命令提示符下测试该函数。
a = [10 20 30; 40 50 60]; b = [100 200 300; 400 500 600]; c = addmatrix(a,b)
c = 110 220 330 440 550 660
准备测试
在 MATLAB 命令提示符下输入以下内容打开 Production Server 编译器:
productionServerCompiler
在工具条的 Type 部分中,从列表中选择 Deployable Archive (.ctf)。
指定要部署的 MATLAB 函数。
在工具条的 Exported Functions 部分,点击加号按钮。
使用文件资源管理器,定位并选择
addmatrix.m
文件。
在标题为 Include MATLAB function signature file 的部分中,点击 Create File 按钮。这将创建一个可编辑的 JSON 文件,其中包含存档中包含的函数的函数签名。通过编辑此文件,您可以指定参量类型和/或输入和输出的大小,还可以为每个输入提供帮助信息。有关详细信息,请参阅JSON 中的 MATLAB 函数签名 (MATLAB Production Server)。
如果您有一个带有函数签名的现有 JSON 文件,点击 Add Existing File 按钮来添加该文件,而不是点击 Create File 按钮。
通过将此信息包含在您的存档中,您可以使用服务器上的发现服务功能。
注意
仅 MATLAB Production Server RESTful API 支持发现服务。有关详细信息,请参阅用于 MATLAB 函数执行的 RESTful API (MATLAB Production Server)。
点击 Test Client 按钮。App 将切换到 TEST 选项卡。
检查 Port 字段的值。
它必须是:
可用端口
客户端正在使用的相同端口号
对于此示例,客户端将使用端口 9910。
选中复选框以 Enable CORS。如果您使用的客户端使用了 JavaScript® 则需要启用此选项。通过启用 CORS,服务器将接受来自不同域的请求。
选中复选框以 Enable Discovery。需要启用此选项才能使用发现服务。发现服务以 JSON 对象的形式返回有关已部署 MATLAB 函数的信息。
点击 Start。
使用 RESTful API 测试
本示例使用 MATLAB使用 HTTP 从 MATLAB 调用 Web 服务 调用 RESTful API 并向测试接口发出请求。您可以使用其他工具,例如 cURL 或 JavaScript XHR。
测试接口不支持异步客户端请求。该接口处理POST Asynchronous Request (MATLAB Production Server)就像POST Synchronous Request (MATLAB Production Server)。不支持来自 RESTful API 的其他异步请求。
测试发现服务
导入 MATLAB HTTP 接口包,设置请求,并将请求发送到测试接口。
% Import MATLAB HTTP Interface packages import matlab.net.* import matlab.net.http.* import matlab.net.http.fields.* % Setup request requestUri = URI('http://localhost:9910/api/discovery'); options = matlab.net.http.HTTPOptions('ConnectTimeout',20,... 'ConvertResponse',false); request = RequestMessage; request.Header = HeaderField('Content-Type','application/json'); request.Method = 'GET'; % Send request response = request.send(requestUri, options);
查看响应主体。
response.Body.Data
响应主体已被剪辑以适合页面大小。通过展开ans = "{"discoverySchemaVersion":"1.0.0","archives":{"matfun":{"archiveSchemaVersion":"1.1.0",...
ans
可以找到响应主体的格式化版本。要使用 JavaScript XHR 进行测试,您可以使用以下代码:
测试数据交换
启动 MATLAB 桌面的单独会话。
注意
您必须使用单独的 MATLAB 会话来发出 POST 请求。如果您从运行测试接口的同一 MATLAB 会话发出 POST 请求,MATLAB 不会响应。
导入 MATLAB HTTP 接口包,设置请求,并将请求发送到测试接口。
% Import HTTP interface packages import matlab.net.* import matlab.net.http.* import matlab.net.http.fields.* % Setup message body body = MessageBody; a = [10 20 30; 40 50 60]; b = [100 200 300;400 500 600]; payload = mps.json.encoderequest({a,b}); body.Payload = payload; % Setup request requestUri = URI('http://localhost:9910/matfun/addmatrix'); options = matlab.net.http.HTTPOptions('ConnectTimeout',20,... 'ConvertResponse',false); request = RequestMessage; request.Header = HeaderField('Content-Type','application/json'); request.Method = 'POST'; request.Body = body; % Send request response = request.send(requestUri, options)
查看响应主体。
response.Body.Data
ans = "{"lhs":[[[110,220,330],[440,550,660]]]}"
要使用 JavaScript XHR 进行测试,您可以使用以下代码:
检查数据
切换到 Production Server 编译器。
在测试界面的 MATLAB 执行请求下,点击 App 中的已完成消息即可查看客户端与 MATLAB 之间交换的值。
点击输入可查看传递到 MATLAB 数组。
点击输出可查看返回到客户端的数组。
设置断点
在 Production Server 编译器的测试界面中,点击 Breakpoints > Break on MATLAB function entry。
在单独的 MATLAB 会话中,向本地测试服务器重新发送 POST 请求。
当 MATLAB 编辑器打开时,请注意在函数的第一行设置了一个断点,并且处理已在断点处暂停。
您现在可以使用所有 MATLAB 调试工具来逐步执行您的函数。
注意
如果您花费很长时间逐步执行 MATLAB 函数,则可能会在客户端中产生超时错误。
请注意,变量
a1
和a2
显示在 MATLAB 工作区中。在 MATLAB 编辑器中,点击继续以完成调试过程。
App 的服务器请求部分显示请求已成功完成。
点击停止以关闭本地测试服务器。
点击关闭测试。
使用 Java 客户端应用程序进行测试
创建一个 Java 文件
MPSClientExample.java
其中包含以下客户端代码:在系统命令提示符下,使用
javac
命令编译 Java 客户端代码。javac -classpath "
matlabroot
\toolbox\compiler_sdk\mps_clients\java\mps_client.jar" MPSClientExample.java在系统命令提示符下,运行 Java 客户端。
java -classpath .;"matlabroot\toolbox\compiler_sdk\mps_clients\java\mps_client.jar" MPSClientExample
注意
您无法从 Java 命令提示符运行 MATLAB 客户端。
应用程序在控制台返回以下内容:
110.0 220.0 330.0 440.0 550.0 660.0
您可以使用下面列出的相同步骤调试客户端和 MATLAB 之间交换的数据使用 RESTful API 测试。