Ошибка загрузки

для загрузки консоли возвращает следующую ошибку:

Загрузка фрейма прервана изменением политики

Пример:

<a href="app.exe">Start Download</a>

Предварительный просмотр в консоли: введите здесь описание изображения

Должен ли я что-то настроить в Компиляторе или QWebSettings?


person Guilherme Nascimento    schedule 29.04.2013    source источник
comment
Возможно, расширение exe является источником этой аллергии. Исполняемые файлы обычно блокируются от прямой загрузки, чтобы избежать вредоносного кода. Это может объяснить слово политика.   -  person Ihsan    schedule 07.05.2013
comment
Загрузка работает (я использую unsupportedContent(QNetworkReply*) и setForwardUnsupportedContent(true)), проблема действительно в странном сообщении. Интересно, что это за сообщение/ошибка. Не могли бы вы сказать мне, почему он появляется? Когда я загружаю, должно появиться сообщение об отмене, а не о сбое (как это происходит в обычных браузерах). Придется ли мне редактировать/переписывать функцию unsupportedContent, используя QWebView->setPage(new myClassPageRewrite())?   -  person Guilherme Nascimento    schedule 07.05.2013


Ответы (2)


Я обнаружил. В обычных браузерах Webkit место для загрузки консоли показывает, как запрос отменен, поэтому перед обращением к «менеджеру загрузок» браузера запрос следует отменить.

решение:

//replace [QWebView] by your WebView
connect([QWebView]->page(), SIGNAL(unsupportedContent(QNetworkReply*)),
this, SLOT(downloadContent(QNetworkReply*)));

...

void [main class]::downloadContent(QNetworkReply *reply){
    //Replace "[main class]" by "Class" having the signs used in WebView.

    [QWebView]->stop();
    //solution: stop loading --replace [QWebView] by your WebView

    /*function to donwload*/
}
person Guilherme Nascimento    schedule 28.05.2013

Редактировать: трудно сказать без надлежащей обратной трассировки, которую я запросил в комментариях, но похоже, что предупреждение на самом деле может быть безвредным.

Оригинал: это потому, что QWebView не знает что делать с вашим файлом app.exe -- в конце концов, это не HTML-страница, не документ text/plain и не поддерживаемое изображение. Класс QWebView не является веб-браузером; вы, видимо, хотите начать загрузку какого-то файла, но в этом классе нет полноценного менеджера загрузок. Для этого вам нужно будет предоставить свой собственный код - код должен будет запросить правильное место для его сохранения и т. д.

Вы можете начать с QWebPage::setLinkDelegationPolicy и самостоятельно обработать этот конкретный клик. .

person Jan Kundrát    schedule 02.05.2013
comment
Спасибо за ответ, но мой код загружается нормально. Я не использовал QWebPage::setLinkDelegationPolicy. Я использовал connect(QWebPage, SIGNAL(unsupportedContent(QNetworkReply*)), this, SLOT(signalDownload(QNetworkReply*))); и setForwardUnsupportedContent(true), с ним загрузка работает отлично. Единственная проблема это сообщение policy какое-то странное (я не понимаю зачем эта политика и что это такое). Если вы можете отредактировать свой ответ, я был бы признателен. Добрый день. - person Guilherme Nascimento; 02.05.2013
comment
Я могу установить setLinkDelegationPolicy только для mimetypes неопознанных? И распознанные миметипы продолжают нормально функционировать (стандартный режим)? - person Guilherme Nascimento; 02.05.2013
comment
Хорошо, я проверил источник qtwebkit, и похоже, что предупреждение печатается даже в довольно безобидных случаях. Было бы интересно увидеть обратную трассировку этой ошибки — похоже, что WebCore::MainResourceLoader::stopLoadingForPolicyChange() — это функция для установки точки останова. Как выглядит трассировка стека? - person Jan Kundrát; 02.05.2013