让你的 wowza server提供 RESTful web 服务
这些情况下。假设我们的 wowza 服务器能提供一个 http api 就好了。就像 web 容器 tomcat 那样。本文以一个简单的 http 发送參数到 wowza。然后 wowza 返回一个 json 为例(经典的 REST 案例)。介绍怎样让你的 wowza 服务器提供 RESTful web 调用接口。
本文是在《代替 Ant:使用 Maven 管理 Wowza 插件开发》样例的基础上进一步进行研发,没有使用 wowza 官方的 Eclipse 插件(官方对 wowza 项目的管理使用的是 ant)。
1. 新建 maven 项目
參考《代替 Ant:使用 Maven 管理 Wowza 插件开发》步骤。新建的 maven 项目 defonds-server-module 例如以下:
新建项目的 debug 调试效果:
2. 编写 HTTProvider2Base 子类
package com.defonds.wms.module.server; import java.io.IOException;
import java.io.OutputStream; import com.wowza.wms.http.HTTProvider2Base;
import com.wowza.wms.http.IHTTPRequest;
import com.wowza.wms.http.IHTTPResponse;
import com.wowza.wms.logging.WMSLogger;
import com.wowza.wms.logging.WMSLoggerFactory;
import com.wowza.wms.vhost.IVHost; public class ServerMonitorHttpInterface extends HTTProvider2Base {
private static final WMSLogger logger = WMSLoggerFactory.getInstance().getLoggerObj(ServerMonitorHttpInterface.class.getName()); @Override
public void onHTTPRequest(IVHost ivHost, IHTTPRequest request, IHTTPResponse response) {
String id = request.getParameter("id");
String name = request.getParameter("name");
logger.debug("ServerMonitorHttpInterface--http--request--id=" + id + ";name=" + name); // TODO do your own business logic here String jsonObject = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
response.setHeader("Content-Type", "application/json");
// Get the printwriter object from response to write the required json object to the output stream
OutputStream out = response.getOutputStream();
try {
out.write(jsonObject.getBytes());
out.flush();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
} }
3. 编辑 VHost.xml
编辑 %wowza%/conf/VHost.xml。加入一个 HTTPProvider:
<HTTPProvider>
<BaseClass>com.defonds.wms.module.server.ServerMonitorHttpInterface</BaseClass>
<RequestFilters>monitor*</RequestFilters>
<AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>
4. 项目又一次打包部署
命令行切换到你的 defonds-server-module 项目文件夹下,运行
mvn package
检查 %wowza%/lib 文件夹,发现 defonds-server-module 已成功部署:
5. 訪问接口
debug 启动 defonds-server-module,然后在浏览器訪问 http://localhost:1935/monitor?id=9527&name=defonds
发现返回的是
Wowza Streaming Engine 4 Trial Edition
Eclipse 控制台也没有 ServerMonitorHttpInterface 本应该输出的 log 日志。
这是由于 com.wowza.wms.http.HTTPServerVersion 这个 HTTPProvider 把请求拦截了:
<HTTPProvider>
<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
<RequestFilters>*</RequestFilters>
<AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>
由于它的配置是 *。
能够改为其它,或者将其凝视掉。就能够了。
凝视掉 HTTPServerVersion 之后。又一次启动 defonds-server-module,然后訪问 http://localhost:1935/monitor?id=9527&name=defonds:
这次是返回的我们想要的信息:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="monitor返回正确信息" align="middle" />
Eclipse 控制台有 log 输出了:
DEBUG server comment - ServerMonitorHttpInterface--http--request--id=9527;name=defonds
成功了。
嗯,就这些。就是这么简单:)本文演示样例源代码已上传 CSDN,有兴趣的朋友能够去这里下载:http://download.csdn.net/detail/defonds/7493981。
參考资料
让你的 wowza server提供 RESTful web 服务的更多相关文章
- Python flask 基于 Flask 提供 RESTful Web 服务
转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...
- RESTful Web 服务:教程
RESTful Web 服务:教程 随着 REST 成为大多数 Web 和 Mobile 应用的默认选择,势必要对它的基本原理有所了解. 在它提出十多年后的今天,REST 已经成为最重要的 Web ...
- Spring MVC中发布Restful Web服务
对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换的. 近些年来,以信息为中心的表述性状态转移(Representational State Tran ...
- 基于jersey和Apache Tomcat构建Restful Web服务(一)
基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
作者: Yi Ming Huang, 软件工程师, IBM Dong Fei Wu, 软件工程师, IBM Qing Guo, 软件工程师, IBM 出处: http://www.ibm.com/de ...
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
原文地址:http://www.ibm.com/developerworks/cn/web/wa-restful/ 简介: Spring,构建 Java™ 平台和 Enterprise Edition ...
- RESTful Web服务的操作
1.首先我们说一下Http协议是无状态的 HTTP协议是无状态的,我们看到查到的用到的返回404,500,200,201,202,301.这些不是HTTP协议的状态码. 是HTTP的状态码,就是HTT ...
- [译]Spring Boot 构建一个RESTful Web服务
翻译地址:https://spring.io/guides/gs/rest-service/ 构建一个RESTful Web服务 本指南将指导您完成使用spring创建一个“hello world”R ...
- SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务
一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
随机推荐
- 洛谷——P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- 最近升级mysql5.7出现下面问题,ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
执行sql: SELECT * FROM `user_link` WHERE `group_id` IN ('78', '79') GROUP BY `link_id` 报错: SQLSTATE[42 ...
- 批量更新带有命名空间的XML文件的多个节点值
/// <summary> /// 批量修改节点值 /// </summary> /// <param name="filePath">路径&l ...
- 自定义word快捷键,设置插入图片快捷键
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 自定义word快捷键,设置插入图片快捷键 文件→选项→自定义功能区 选择键盘快捷方式 自 ...
- 2017 Multi-University Training 1 解题报告
Add More Zero Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- django2与1的差别和视图
django1与2路由的差别 在django1中的url在django2中为re_path django2中新增了path 1.from django.urls import path 2.不支持正则 ...
- bootstrap学习(全局CSS样式)(二)
标题类:.h1到.h6 页面主体 bootstrap将全局font-size设置为14px,line-height设置为1.428,这些属性 直接赋予元素和所有段落元素. 文本对齐类 text-lef ...
- Dell最近的几款显示器看上去还不错的样子
发现最近戴尔最近发布了两款的4k显示器P2415Q和P2715Q,价格还比较平易近人,淘宝价24寸3700,27寸4700,让人有点心动了.基本参数如下: 3840*2160分辨率 亮度350cd/m ...
- HDU 3473 Minimum Sum(划分树)
Minimum Sum Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 开源轻量级即时通讯技术 MobileIMSDK 的常见问题解答
本帖最后由 茜茜asa 于 2015-12-14 17:50 编辑 申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用 ...