I am trying to intercept HTTP response and cannot make it working. I've searched this forum and googled my question, tried several things, but nothing seemed to work. I've added the following code to cefsimple:
- Code: Select all
class MyResourceHandler : public CefResourceHandler
{
public:
bool ProcessRequest(CefRefPtr<CefRequest> request, CefRefPtr<CefCallback> callback)
{
std::cout << "ProcessRequest is called" << std::endl;
callback->Continue();
return true;
}
void GetResponseHeaders(CefRefPtr<CefResponse> response, int64& response_length, CefString& redirectUrl)
{
std::cout << "GetResponseHeaders is called" << std::endl;
response->SetStatus(200);
response_length = -1;
}
bool ReadResponse(void* data_out,int bytes_to_read,int& bytes_read,CefRefPtr<CefCallback> callback)
{
std::cout << "ReadResponse is called" << std::endl;
return true;
}
void Cancel(){}
private:
IMPLEMENT_REFCOUNTING(MyResourceHandler);
};
class MyHandler : public CefClient, public CefRequestHandler, public CefResourceRequestHandler
{
CefRefPtr<CefRequestHandler> GetRequestHandler()
{
std::cout << "GetRequestHandler is called" << std::endl;
return this;
}
CefRefPtr<CefResourceHandler> GetResourceHandler(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request)
{
std::cout << "GetResourceHandler is called" << std::endl;
return new MyResourceHandler();
}
private:
IMPLEMENT_REFCOUNTING(MyHandler);
};
and replaced CefRefPtr<SimpleHandler> handler(new SimpleHandler(use_views)) with CefRefPtr<MyHandler> handler(new MyHandler) in simpleapp. I am getting "GetRequestHandler is called" but no messages related to resources. What am I doing wrong?