2012-11-05 7 views
0

나는 플러그인 개발을 처음 사용합니다. 나는 npapi 플러그인을 개발하기 위해 Firebreath를 사용하라는 말을 들었습니다. 이제, 나는 플러그인에 전달 된 응답의 http 응답 헤더에 액세스하려고합니다. 그러나 나는 그들의 희소 한 의사가 firebreath를 위해 유효한대로 길을 이해할 수 없었다. NPAPI 자습서에서는 npstream을 사용하지만 firebreath에서이 구조를 사용하는 방법을 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.npapi 플러그인에서 http 응답 헤더를 얻는 방법

업데이트 : 경고 상자의

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); 
} 

빈 경고 상자가 나타납니다.

답변

1

사용중인 BrowserStreamRequest 객체에 대해 source을 읽거나 작성한 곳의 소스를 읽으면 객체에 headers 변수가 있다는 것을 알 수 있습니다.

FB::HeaderMap headers; 

FB :: HeaderMap은 물론, SimpleStreamHelper.h에 정의되어 FireBreath에 대한 문서가 많이있다, 명확하게,

typedef std::multimap<std::string, std::string> HeaderMap; 

를 그리고; 이 특정 기능에 대해서는별로 많지 않습니다.이 기능은 약 한 달 동안 만 나무에있었습니다.

편집 : 과거의 대화에서 난 당신이 이미 처리하고 확신하지만, 브라우저에 의해 생성 된 스트림은 플러그인 개체에 handleUnsolicitedStream 방법에 전달 된 BrowserStreamRequest 오브젝트 당신에게 주어집니다; 이 방법은 기본적으로 fbgen 템플릿에서 플러그인에 의해 무시되지 않지만 추가 할 수 있습니다.

+0

응답에서 오는 헤더의 위치를 ​​묻습니다. 그들은 (NPP_NewStream에서) 스트림의 apon 생성으로 만들어진 BrowserStreamRequest 객체에 넣어집니다. – taxilian

+0

이것은 내가 당신과의 과거 대화에서 이미 원치 않는 스트림을 처리하고 있다고 생각했기 때문에 혼란 스럽지만 여기에 대한 답변이 업데이트되었습니다. 그 정보를 포함 시키십시오. – taxilian

+0

아마도 내 대답을 이해하지 못할 수도 있습니다. 나는 당신이 http 요청을 만들 때 말하는 것이 아니다. 브라우저가 mime-type을 포함하는 응답을 받고 플러그인이 호출되는 경우에 대해 이야기하고 있습니다. 같은 응답의 헤더를 원하면 handleUnsolicitedStream 메서드가 호출됩니다. 찾고있는 헤더가있는 FB :: BrowserStreamRequest 객체에 FB :: HeaderMap 유형의 공용 속성이 있습니다. 그것은 방법이 아닙니다! 그것은 단지 공공의 재산입니다. 코드를 살펴보십시오. 또한 디버거를 사용해보십시오. 나는 내가 어떻게 같은 것을 설명 할 수 있는지 알지 못한다. – taxilian