crossplatform.ru

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


  Ответ в Yandex не отвечает
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
thechicho Дата 26.9.2011, 9:11
  подскажите, плиз, примером кода, как обрабатывать редиректы? в cURL на php я использовал FOLLOWLOCATION, true. есть ли аналог в Qt? или нужно каждый раз парсить из заголовков ответа Location: url и делать на него request?

//Буду пользоватся QWebView, там проблем нет
приведите пример кода?
vbi Дата 19.8.2011, 11:38
  Буду пользоватся QWebView, там проблем нет
vbi Дата 19.8.2011, 10:38
  без www редиректит на www
ufna Дата 19.8.2011, 10:30
  а без www пробовал?
vbi Дата 19.8.2011, 9:37
  Пробовал, то же самое. Но прослушав сниффером, увидел, что текст ответа пустой, а в заголовке ответа есть редирект, но пройдя последовательно по всем редиректам попадаю на страницу оповещения яндекса о возможной подмене страницы злоумышлинниками.
PAFOS Дата 18.8.2011, 14:30
  попробуй reply->readAll();
vbi Дата 18.8.2011, 10:53
  Что ж такое. Скажите, у кого-нибудь еще работает, но кто не через прокси?
PAFOS Дата 18.8.2011, 8:37
  у меня все правильно отработал.

Но справедливости ради скажу что я работаю через HTTP прокси
vbi Дата 17.8.2011, 11:32
  Написал програмку, которая посылает 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;
}


Скачать прогу можно отсюда
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 20:25