按照下列步骤创建、发布一个LabVIEW Web服务,并在LabVIEW Web服务和Web客户端(以Web浏览器为例)之间交换数据。

注: LabVIEW Web服务仅在LabVIEW完整版开发系统和LabVIEW专业版开发系统中可用。

教程包括下列内容:

  1. 创建Web服务
  2. 测试和调试Web服务
  3. 配置客户端访问Web服务的方式
  4. 发布Web服务至NI Web服务器
  5. 从客户端访问Web服务

创建Web服务

在LabVIEW项目中开发Web服务,组合并配置构成Web服务的VI和其他文件。按照下列步骤创建一个Web服务项目和两个HTTP方法VI。

  1. 创建一个组织Web服务文件的LabVIEW项目。将项目保存为Tutorial.lvproj
  2. 右键单击我的电脑并选择新建»Web服务。LabVIEW在该终端下添加一个Web服务项目项和文件夹。
    注: 在本教程中,您将创建一个Web服务,并将服务发布至主机。在项目浏览器的RT终端下创建一个Web服务项目,可把该Web服务发布至RT终端。如要将Web服务发布至RT终端,则只可使用应用程序Web服务器托管Web服务。详细信息请参考教程:创建LabVIEW Web服务并将其发布到应用程序Web服务器
  3. 右键单击Web服务项目项并选择重命名,将Web服务命名为TutorialService。项目显示为:

  4. 右键单击Web资源并选择新建VI,新建一个HTTP方法VI,该VI从客户端接收HTTP请求并将数据返回客户端。LabVIEW从模板打开一个新的VI。
    注: 默认状态下,HTTP方法VI通过连线板向客户端返回数据。在该教程中,HTTP方法VI返回默认的JSON格式文本。创建本教程未涵盖的HTTP方法VI时,也可以自定义格式(例如,自定义HTML页或图像数据)返回数据流至客户端,而不是通过连线板返回数据。。在Web服务属性对话框的HTTP方法VI设置页配置输出的格式。
  5. 在该新VI中,创建如下所示的程序框图、前面板和连线板。
    程序框图前面板连线板
    将该VI作为Web服务的一部分发布时,Web客户端可发送HTTP请求调用该VI。调用时,VI执行下列操作:
    • 接收来自客户端HTTP请求分配给连线板的任何控件的值(不包括LabVIEW Web服务请求)。LabVIEW Web服务请求相当于引用句柄,用于识别当前的HTTP请求。
    • 计算ab的和。
    • 通过分配给连线板的c显示控件返回这些值的和。
    • 执行“读取请求变量”VI并返回客户端在当前HTTP请求中包含的查询字符串,该字符串由LabVIEW Web服务请求识别。
      提示 在更为复杂的Web服务中,可能会使用Web服务选板上的其他VI来启用某些功能,如设置HTTP头和身份验证。
  6. 注意每个输入控件和显示控件均显示在连线板上。默认接线端输出类型中,只有通过分配给HTTP方法VI连线板的输入和输出,Web服务才能从客户端接收数据或将数据发送至客户端。
    提示 各个对象分配的名称应具有一定的区分度。因为这些名称将成为Web客户端使用的URL的一部分,用来与VI交换数据。
  7. 将VI保存为Add.vi
  8. 在弹出的对话框中选择文件»另存为,然后选择副本»另外打开副本。确保勾选添加副本至Tutorial.lvproj复选框,然后单击继续
  9. 将新副本保存为Subtract.vi
  10. 打开Subtract.vi的程序框图,并将“加”函数替换为“减”函数。重新连线输入控件和显示控件。
  11. 返回项目,右键单击Web资源并选择新建Web资源。重命名新建项目项为AdditionalOperations
  12. 拖曳Subtract.viAdditionalOperations项目项下。保存项目,项目应显示如下图。

注意项目目录树中的下列功能:

  • LabVIEW向每个HTTP方法VI追加HTTP请求类型,默认值为GET。可对客户端发送至特定HTTP方法VI的HTTP请求类型进行修改,教程后续章节有详细说明。
  • Web服务项目项还包含启动VI文件夹。本教程未使用启动VI,但后续章节对启动VI做了详细说明。

相关信息

Web服务的构成

指定接线端的输入控件和显示控件

开发HTTP方法VI:选择输出数据的格式

配置HTTP头、数据流和缓冲

在LabVIEW中管理项目

测试和调试Web服务

发布Web服务至终端前,需要测试HTTP方法VI是否按照预期与客户端进行通信。可直接从LabVIEW项目运行NI Web服务器上的Web服务,允许客户端发送请求至HTTP方法VI。

  1. 右键单击Web服务项目项并选择开始
  2. 如果是在计算机上第一次使用NI Web服务器,按照下列步骤启用和配置NI Web服务器:
    1. 单击开始Web服务对话框的配置NI Web服务器,打开NI Web服务器配置。
    2. 在本教程中,请选择简单本地访问预设选项,然后单击下一步
    3. 认证选项卡上,选择使用admin用户登录进行服务器管理,创建密码。单击下一步
    4. 单击完成,应用配置。
  3. 切换回LabVIEW项目并重复步骤1。Web服务现已在NI Web服务器上运行。
  4. 打开Add.vi。注意,运行按钮表示VI保留为执行,因为LabVIEW加载Web服务,使其可在NI Web服务器上与客户端通信。
  5. 关闭Add.vi
  6. 按照下列步骤,获取客户端调用Add.vi使用的URL:
    1. 右键单击Add.vi并选择显示方法URL,显示HTTP方法URL对话框。
    2. 可用服务器下拉菜单中,选择包含NI Web服务器的项,然后单击复制URL
    3. 关闭对话框。
      注:HTTP方法URL对话框打开,则Web服务不响应客户端的任何请求。
  7. 将第6步复制得到的URL在浏览器中打开,用实际值替换{value}变量。例如,http://127.0.0.1:80/TutorialService/Add?b=2&a=3
    注: NI Web服务器使用80/443作为HTTP/HTTPS协议的默认端口。如果端口被其他应用程序占用,则需要使用其他端口。可在NI Web服务器配置中自定义端口号。关于认证、端口和远程连接的详细信息,请参考配置NI Web服务器。
  8. 浏览URL。Add.vi接收到浏览器的HTTP请求,计算ab的值,并返回响应,包括分配给Add.vi连线板每个显示控件的名称和输出值。本教程中的响应格式为JSON字符串,即接线端的默认输出格式。注意Add.vi有两个分配至连线板的显示控件:cvalue。HTTP方法VI在响应中返回这两个值。

    {"c":5,"value":"b=2&a=3"}

    注: 如发现非预期行为,必须停止调试会话才可编辑Web服务文件,因为LabVIEW为执行保留文件时无法对其进行编辑。右键单击Web服务项目项并选择停止
  9. Subtract.vi上重复执行第6、7步。也可直接更改第7步中的URL,获得Subtract.vi唯一对应的URL映射:http://127.0.0.1:80/TutorialService/AdditionalOperations/Subtract?b=2&a=3
  10. Subtract.vi重复第8步。
  11. 右键单击Web服务项目项并选择停止

相关信息

测试和调试Web服务

设置Web服务的NI Web服务器

配置客户端访问Web服务的方式

Web客户端通过URL与HTTP方法VI交换数据。后续教程中,将在Web浏览器中输入特定的URL,直接发送数据至HTTP方法VI连线板上的输入控件。

根据下列步骤,定义客户端可用于方法HTTP方法VI的URL:

  1. 右键单击Web服务项目项并选择属性,显示Web服务属性对话框。
  2. HTTP方法VI设置页,注意LabVIEW项目中Web资源文件夹的HTTP方法VI出现在Web服务VI表格中。同时,与Add.vi相比,注意在AdditionalOperations项目项中放置Subtract.vi的方式如何影响URL映射。
  3. 在表格中选择Subtract.vi,注意页面底部URL映射选项卡的下列功能:
    • 可在方法下拉菜单中改变HTTP请求的类型。设置Subtract.vi为默认值GET。
    • 可选择禁用LabVIEW用于映射URL至VI的标准格式,自定义显示在服务名称后的URL部分。本教程使用标准URL映射并包含VI名称。
    • URL栏显示了LabVIEW为HTTP方法VI创建的基本URL。例如,LabVIEW为Subtract.vi创建的默认URL映射为/AdditionalOperations/Subtract。

    注: 在更为复杂的Web服务中,可能需要使用该页的其他选项卡配置VI返回输出数据至Web客户端的格式,以及权限等安全设置。
  4. 单击确定,关闭Web服务属性对话框。
  5. 保存Tutorial.lvproj

相关信息

理解Web服务中的URL映射和查询字符串

发布Web服务至NI Web服务器

可将创建的Web服务发布至NI Web服务器。NI Web服务器 - NI Web服务器是生产级的Web服务器,可以托管用户授权的Web服务。例如,LabVIEW Web服务、SystemLink™服务。NI Web服务器保护Web应用程序免受常见Web安全威胁,为许多企业级数据服务提供良好的扩展性,可以实现设备管理。在本教程中,您将Web服务包括在NI程序包中,通过安装程序包发布Web服务。

注: 也可将Web服务发布至应用程序Web服务器。详细信息请参考教程:创建LabVIEW Web服务并将其发布到应用程序Web服务器

按照下列步骤,通过程序包将Web服务发布至运行在本地计算机上的NI Web服务器:

  1. 右键单击项目浏览器窗口的程序生成规范,选择新建»程序包,打开程序包属性对话框。
  2. 信息页,使用程序包输出目录指定生成程序包的位置。
  3. Web服务页上,勾选TutorialService复选框,将其加入程序包中的Web服务。
  4. 单击生成,出现生成状态对话框。
  5. LabVIEW完成程序包生成后,单击浏览,可打开LabVIEW保存程序包文件(.nipkg)的目标目录。
  6. 双击程序包,通过NI Package Manager进行安装。安装完成后,Web服务将发布到主机上的NI Web服务器。
  7. 关闭LabVIEW项目。发布的Web服务在LabVIEW Runtime上运行,不依赖于LabVIEW开发系统。

相关信息

发布Web服务

从客户端访问Web服务

按照下列步骤,通过URL从Web浏览器发送数据至发布的Web服务:

  1. 测试和调试Web服务部分第7步复制得到的URL在浏览器中打开,用实际值替换{value}变量。例如,http://127.0.0.1:80/TutorialService/Add?b=2&a=3
    注: 如客户端与发布的Web服务不在同一个系统上,必须将127.0.0.1替换为托管系统的实际IP地址,或可在NI Web服务器配置中自定义的主机名称。
  2. 浏览器返回JSON响应,包括分配给连线板每个显示控件的输出值。

相关信息

通过URL发送数据至已部署的应用程序

延伸阅读

范例代码

关于使用Web服务的范例,见下列LabVIEW项目:

  • examples\Connectivity\Web Services\Weather Monitor\Web Services — Weather Monitor.lvproj