crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Yandex не отвечает
vbi
  опции профиля:
сообщение 17.8.2011, 11:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 17.8.2011
Пользователь №: 2813

Спасибо сказали: 0 раз(а)




Репутация:   0  


Написал програмку, которая посылает GET запрос на "www.yandex.ru", который по идее должен возвратить содержание страницы, но вместо этого возвращает пустую строку.
Если послать get запрос на "yandex.ru", то яндекс возвращает страницу "302 Moved Permanently" и перенаправляет на "www.yandex.ru", а тот в свою очередь возвращает пустую строку.
Как с ним бороться, может какие-то уникальные заголовки передать?

Код программы:
.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtNetwork/QNetworkAccessManager>
#include <QUrl>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QDebug>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void on_pushButton_clicked();
    void searshFinished(QNetworkReply*);
};

#endif // MAINWINDOW_H


.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QNetworkRequest request;
    request.setUrl(QUrl("http://www.yandex.ru/"));
    request.setRawHeader("Host", "yandex.ru");
    request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.10) Gecko/2009042809 GranParadiso/3.0.10");
    //request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)");
    //request.setRawHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.9.168 Version/11.50");
    //request.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    //request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
    //request.setRawHeader("Accept-Encoding", "gzip,deflate");
    //request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    request.setRawHeader("Keep-Alive", "115");
    request.setRawHeader("Connection", "keep-alive");
    //request.setRawHeader("Referer", urlBytes);
    //request.setRawHeader("Cookie", "");
    //request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
    //request.setRawHeader("Content-Length", "557");


    QNetworkAccessManager* manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(searshFinished(QNetworkReply*)));
    manager->get(request);
}

void MainWindow::searshFinished(QNetworkReply* reply)
{
    QByteArray ansver = reply->read(reply->bytesAvailable());
    qWarning() << ansver;
}


Скачать прогу можно отсюда
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
thechicho
  опции профиля:
сообщение 26.9.2011, 9:11
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 26.9.2011
Пользователь №: 2907

Спасибо сказали: 1 раз(а)




Репутация:   0  


подскажите, плиз, примером кода, как обрабатывать редиректы? в cURL на php я использовал FOLLOWLOCATION, true. есть ли аналог в Qt? или нужно каждый раз парсить из заголовков ответа Location: url и делать на него request?

//Буду пользоватся QWebView, там проблем нет
приведите пример кода?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 20:55