如何为另一台服务器创建httpprovider

时间:2013-11-23 15:03:11

标签: wowza

我试图在eclipe中创建httpprovider,当在wowza媒体服务器中运行时,它无法正确加载它只返回wowza服务器版本。 日食代码在这里

package com.domain.appname;

import java.io.IOException;
import java.io.OutputStream;

import com.wowza.wms.vhost.IVHost;
import com.wowza.wms.http.HTTProvider2Base;
import com.wowza.wms.http.IHTTPRequest;
import com.wowza.wms.http.IHTTPResponse;

public class CreateApp extends HTTProvider2Base {

    public void onHTTPRequest(IVHost inVhost, IHTTPRequest req, IHTTPResponse resp){

        String ret = req.getQueryString();

        resp.setHeader("Content-Type", "text/xml");

        OutputStream out = resp.getOutputStream();
        byte[] outBytes = ret.toString().getBytes();
        try {
            out.write(outBytes);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

并将vhost文件设置为

<HTTPProvider>
<BaseClass>com.domain.appname.CreateApp</BaseClass>
<RequestFilters>CreateProducerApp*</RequestFilters>
<AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>

请帮忙

2 个答案:

答案 0 :(得分:5)

如果没有看到完整的vhost.xml,我的猜测是你将新的HTTPProvider放在HTTPProviders列表的最后。

当服务器处理http请求时,它从第一个请求开始并尝试每个请求。返回服务器信息的提供程序的RequestFilter是“*”,这意味着在调用此服务器之后不会有任何提供程序。这通常是最后一个。确保你的是在此之前。

答案 1 :(得分:1)

请将以下块中的HTTPProvider条目放在vHosts文件中:

<HTTPProvider>              
  <BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
  <RequestFilters>*</RequestFilters>
  <AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>

否则,您的所有请求都将提供Wowza版本的详细信息。

因此,您的最终vhost文件的结尾应如下所示:

<HTTPProvider>
  <BaseClass>com.domain.appname.CreateApp</BaseClass>
  <RequestFilters>CreateProducerApp*</RequestFilters>
  <AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>
<HTTPProvider>              
  <BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
  <RequestFilters>*</RequestFilters>                            
  <AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>