Переназначить ответ HTTP сервера работая с QNetworkAccessManager, Обработка пустого ответа от HTTP-сервера |
Здравствуйте, гость ( Вход | Регистрация )
Переназначить ответ HTTP сервера работая с QNetworkAccessManager, Обработка пустого ответа от HTTP-сервера |
NightMan15 |
29.12.2009, 17:07
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 29.12.2009 Пользователь №: 1345 Спасибо сказали: 0 раз(а) Репутация: 0 |
HTTP-сервер выдает в файле /index.html код для двух фреймов. При запросе /index.html сервер отправляет "200 ОК", а вот при получении запроса на ссылку фрейма нет, но сам html-код выдает. Выдает вместо "200 ОК" пустой заголовок. IE и Opera это умеют обрабатывать и все отображается. А вот как и демо пример \qt\demos\browser, у меня пишет
Как бы мне этот пустой ответ переопределить на "хороший" (200 ОК), чтоб эту страничку загрузить? Или хотя бы куда копать? Это выполняет QNetworkRequest, QNetworkReply или QNetworkAccessManager? Вот мой код: CODE void MainApp::on_GetPage_clicked(){ QNetworkRequest request; request.setRawHeader("Authorization", "Basic " + QByteArray(QString("%1:%2").arg(USER).arg(PASS).toAscii()).toBase64()); request.setUrl(QUrl("http://192.168.6.10/index.html")); //request.setUrl(QUrl("http://192.168.6.10/goform/general_config_handler")); reply = manager->get(request); } void MainApp::downloadFinished(QNetworkReply *reply){ int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); QString statusStr = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).isNull()){ //reply->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200); //reply->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, "OK"); } } Я нашел небольшой код accessmanagerreply_p.cpp. Там есть функция но у меня она не работает (закомментировал).Вот эта страничка cURL скачивается: /index_html CODE == Info: About to connect() to 192.168.6.10 port 80 (#0) == Info: Trying 192.168.6.10... == Info: connected == Info: Connected to 192.168.6.10 (192.168.6.10) port 80 (#0) == Info: Server auth using Basic with user 'admin' => Send header, 175 bytes (0xaf) 0000: GET /index.html HTTP/1.1 001a: Authorization: Basic YWRtaW46cm9vdHBhc3N3ZA== 0049: User-Agent: curl/7.19.7 (i386-pc-win32) libcurl/7.19.7 zlib/1.2. 0089: 3 008c: Host: 192.168.6.10 00a0: Accept: */* 00ad: == Info: HTTP 1.0, assume close after body <= Recv header, 17 bytes (0x11) 0000: HTTP/1.0 200 OK <= Recv header, 32 bytes (0x20) 0000: Date: Thu Jan 1 01:28:48 1970 <= Recv header, 41 bytes (0x29) 0000: Last-modified: Fri Nov 28 03:18:59 2008 <= Recv header, 21 bytes (0x15) 0000: Content-length: 312 <= Recv header, 25 bytes (0x19) 0000: Content-type: text/html <= Recv header, 2 bytes (0x2) 0000: <= Recv data, 312 bytes (0x138) 0000: <html>.<head>. <title>Web Interface</title>.</head>.< 0040: link href="styles.css" rel="stylesheet" type="text/css"> ..<fram 0080: eset cols="20%, 80%" frameborfer="no" border="0">..<frame src="/ 00c0: goform/menu_handler" name="menubuttons">..<frame src="/goform/ma 0100: in_config_handler" name="someshet">.</frameset>.</html>. == Info: Closing connection #0 /general_config_handler CODE == Info: About to connect() to 192.168.6.10 port 80 (#0) == Info: Trying 192.168.6.10... == Info: connected == Info: Connected to 192.168.6.10 (192.168.6.10) port 80 (#0) == Info: Server auth using Basic with user 'admin' => Send header, 194 bytes (0xc2) 0000: GET /goform/general_config_handler HTTP/1.1 002d: Authorization: Basic YWRtaW46cm9vdHBhc3N3ZA== 005c: User-Agent: curl/7.19.7 (i386-pc-win32) libcurl/7.19.7 zlib/1.2. 009c: 3 009f: Host: 192.168.6.10 00b3: Accept: */* 00c0: <= Recv header, 2 bytes (0x2) 0000: <= Recv data, 1682 bytes (0x692) 0000: 0002: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 0043: <HTML> 004b: <head> 0053: <title>general configuration!!!</title> 0088: <meta http-equiv=Content-Type content="text/html;charset=windows 00c8: -1251"> 00d1: <meta http-equiv="Pragma" content="no-cache"> 0100: <META HTTP-EQUIV="REFRESH" CONTENT="600"> 017d: 017f: <link href="../styles.css" rel="stylesheet" type="text/css"> 01bd: 01bf: <script language="JavaScript" type="text/javascript"> 05af: </head> 05b8: 05ba: <BODY"> 099a: .</BODY>. 09a5: </HTML> 09ae: == Info: Connection #0 to host 192.168.6.10 left intact == Info: Closing connection #0 Очень надеюсь на помощь! |
|
|
kwisp |
16.1.2010, 13:35
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
ну раз так надо полез бы а нутро тролевского браузера узнал бы как он принимает ответы сервера. я подозреваю через QNetworkAccessManager.
переопределил бы пустой ответ на положительный. можно по коду поискать "200" "QNetworkAccessManager" и прочее. если не ошибаюсь можно даже в устанавливать QNetworkAccessManager для каждой QWebView, остается в коде найти место где создаются QWebView и давать им свой исправленый QNetworkAccessManager. это как вариант. П.С. а вообще тролли думаю правы на счет считать ответ с пустым заголовком ошибочным. |
|
|
NightMan15 |
16.1.2010, 16:14
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 29.12.2009 Пользователь №: 1345 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 4.1.2025, 19:12 |