我试图在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>
请帮忙
答案 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>