Здравствуйте. Есть опенсурсная программа для просмотра гуглокарт
http://qgmview.sourceforge.net/. Но она несколько устарела и карты больше не отображаются, т.к. Гугл ругается на Get - запрос и отвечает Sorry (до недавнего момента работало, но пару дней назад перестало -> забанили?).
В классе downloader есть метод:
void Downloader::nextRequest(){
printf("next request\n");
while (!requests.empty()){
Request& cur = requests.head();
file.setFileName(cur.filename);
QUrl url(cur.url);
http->setHost(url.host());
if (!file.open(QIODevice::WriteOnly)){
printf("couldn't open file %s\n", (const char*)(cur.filename.toAscii()));
//cur.callback->execute(false);
requests.dequeue();
continue;
}
http->request(header);
printf("file to retrieve: %s\n", (const char*)(cur.url.toAscii()));
lastRequestId = http->get(cur.url, &file);
break;
}
if (requests.empty())
emit downloadsFinished();
}
Есть идея прописать вот это:
QHttpRequestHeader header("GET", QUrl::toPercentEncoding(cur.url));
header.setValue("Accept", "text/html, application/xhtml+xml, */*\n");
header.setValue("Accept-Language", "ru-RU\n");
header.setValue("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Creative AutoUpdate v1.41.05)\n");
header.setValue("Accept-Encoding", "gzip, deflate\n");
header.setValue("Host", "mt0.google.com\n");
header.setValue("Connection", "Keep-Alive\n");
http->setHost(url.host());
http->request(header);
Но как заменить последнюю строчку в оригинальном коде
lastRequestId = http->get(cur.url, &file);
? Чтобы результат передавался файлу. Или какие-нибудь другие идеи о том, как обмануть гугл?
Заранее спасибо.