让你的 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 ...
随机推荐
- 洛谷——P1190 接水问题
P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学 ...
- 洛谷——P2388 阶乘之乘
P2388 阶乘之乘 题目背景 不告诉你…… 题目描述 求出1!*2!*3!*4!*……*n!的末尾有几个零 输入输出格式 输入格式: n(n<=10^8) 输出格式: 有几个零 输入输出样例 ...
- SublimeCodeIntel代码自动补全配置
主要使用python3,所有配置以python3为例.其他语言同理.利用sublimeCodeIntel插件可以实现自动提示python3代码.跳转追踪自定义函数.查看系统函数等.功能还是相当强大的. ...
- Python开发基础-Day22反射、面向对象进阶
isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象,如果是返回True class Foo ...
- Heavy Transportation(POJ - 1797 变形版 dijkstra)
Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand bus ...
- ubuntu16安装navicat字体显示不正常,显示方框以及字体倒立
昨天遇到了这个问题,网上找了很多方法都没有真正解决这个问题. 目前其他博客论坛说的主要方法有 1)将安装目录下的./start_navicat中的字符集改为zh_CN.UTF-8 2)将系统的默认字符 ...
- andorid关于selector更换图片失效
写selector的xml文件时,需注意item的顺序,不带状态的item放在最后,否则selector无效 为按钮写了一个selector,一个正常状态,一个点击的状态,用了两张不同的图片.以求达到 ...
- pcap报文格式
pcap报文格式 pcap报文整体格式 pcap 报文头格式 pcap报文格式,黄色部分为报文头 pcapng报文格式 PCAPNG: PCAP Next Generation Dump File F ...
- C语言基本数据类型简介
1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型.整形和长整形. 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位 ...
- Android应用内使用新浪微博SDK发送微博(不调用微博客户端)
需求 手头的一个应用需要添加分享到新浪微博的功能,这个功能在现在的应用上是非常的普遍的了. 分享到新浪微博,其实就是发送一条特定内容的微博,所以需要用到新浪微博SDK了. 微博SDK SDK的下载地址 ...