Я использую Awesomium 1.7.5 в C ++ на VC ++.
У меня есть консольная программа, которую я хотел бы автоматически загружать с веб-страниц. Я работаю безголовый веб-браузер Я переопределил виртуальную функцию «OnRequestDownload» следующим образом:
void WebViewListener::Download::OnRequestDownload(Awesomium::WebView*
caller,
int download_id,
const Awesomium::WebURL& url,
const Awesomium::WebString& suggested_filename,
const Awesomium::WebString& mime_type)
{
std::cout << "Download Triggered";
view->DidChooseDownloadPath(download_id, Awesomium::WSLit
("n:\\test.pdf"));
}
Моя веб-страница отправляет ссылку на скачивание PDF-файла при каждом нажатии на ссылку. Несмотря на то, что вручную щелкают координаты ссылки и щелкают ссылку в java, событие загрузки не инициируется.
Я занимался этим уже два дня, поливал документацию, и я никак не могу понять это. Заранее благодарны за Вашу помощь.
РЕДАКТИРОВАТЬ:
Таким образом, я сделал конкретный класс из всего виртуального класса. Это все еще не выполнено.
class DLListener : public WebViewListener::Download {
public:
void OnRequestDownload(Awesomium::WebView* caller,
int download_id,
const Awesomium::WebURL& url,
const Awesomium::WebString& suggested_filename,
const Awesomium::WebString& mime_type);
void OnUpdateDownload(Awesomium::WebView* caller,
int download_id,
int64 total_bytes,
int64 received_bytes,
int64 current_speed);
void OnFinishDownload(Awesomium::WebView* caller,
int download_id,
const Awesomium::WebURL& url,
const Awesomium::WebString& saved_path);
};void DLListener::OnRequestDownload(Awesomium::WebView* caller,
int download_id,
const Awesomium::WebURL& url,
const Awesomium::WebString& suggested_filename,
const Awesomium::WebString& mime_type)
{
std::cout << "Download Triggered.\n";
view->DidChooseDownloadPath(download_id, Awesomium::WSLit ("n:\\test.pdf"));
}
void DLListener::OnFinishDownload(Awesomium::WebView* caller,
int download_id,
const Awesomium::WebURL& url,
const Awesomium::WebString& saved_path)
{
std::cout << "Download Finished.\n";}
В моем основном коде я создаю экземпляр и затем устанавливаю слушателя:
DLListener *listener = new DLListener;
view->set_download_listener(listener);
Еще ничего. Нет файла, нет вывода на консоль. Я все еще делаю что-то не так?
Для справки, элемент, который вызывает событие, выглядит так:
<a id="ctl00_phPageContent_lnkPrintFiling" href="javascript:__doPostBack('ctl00$phPageContent$lnkPrintFiling','')">Print Filing</a>
При нажатии загружается файл PDF.
Задача ещё не решена.
Других решений пока нет …