我是插件开发新手。我被告知使用Firebreath来开发npapi插件,结果很容易。现在,我想访问传递给plugin的响应的http响应头。但我想不出一个办法,因为他们是稀缺的医生,可供消防呼吸。在NPAPI教程中,它们使用npstream,但我不知道如何在firebreath中使用此结构。任何帮助都将不胜感激。
更新:
void tPlugin::handleUnsolicitedStream(FB::BrowserStreamRequest& req)
{
const FB::PluginEventSinkPtr sinkPtr;
req.setEventSink(sinkPtr);
responseHeaders = req.headers;
FB::HeaderMap::const_iterator it = responseHeaders.begin();
str = (*it).first + " : " + (*it).second; // str is a class variable
FB::DOM::WindowPtr window = m_host->getDOMWindow();
window->alert(str);
str = "hello";
window->alert(fname);
}
没有出现警报框!
void tPlugin::onPluginReady()
{
FB::DOM::WindowPtr window = m_host->getDOMWindow();
window->alert(str);
}
出现一个空警报框!
最佳答案
如果您为正在使用的BrowserStreamRequest对象阅读了source,或者如果您阅读了创建它的源文件,您会发现该对象上有一个headers变量。
FB::HeaderMap headers;
当然,HeaderMap是在SimpleStreamHelper.h中定义的:
typedef std::multimap<std::string, std::string> HeaderMap;
而且,要澄清的是,FireBreath有大量的文档;但对于这个只有一个月的特性来说,文档并不多。
编辑:从过去的对话中,我很确定你已经在处理这个问题,但是浏览器创建的流是给你的,BrowserStreamRequest对象被传递到插件对象的handleUnsolicitedStream方法中;这个方法在fbgen模板中默认不被插件覆盖,但是你可以添加它。