Qt/cookie-如何在网站上发送帖子(phpbb3)

Qt/cookie-如何在网站上发送帖子(phpbb3),qt,networking,phpbb3,Qt,Networking,Phpbb3,我的英语水平很低 我有问题: 我无法在论坛phpbb3上发送消息。 我可以登录。我无法发送消息。 登录论坛成功。发送邮件是行不通的 我的源代码: 对话.h #ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include

我的英语水平很低

我有问题: 我无法在论坛phpbb3上发送消息。 我可以登录。我无法发送消息。 登录论坛成功。发送邮件是行不通的

我的源代码:

对话.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QNetworkCookie>
#include <QNetworkCookieJar>
#include <QDebug>
#include <QList>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

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

private:
    Ui::Dialog *ui;
    QNetworkAccessManager *manager;
    QList <QNetworkCookie> cookie;
    QList <QByteArray> listt;
    QNetworkRequest request;
    QNetworkReply *reply;
    QVariant var;
    QNetworkCookieJar *cookiejar;

public slots:
    void mySlot(QNetworkReply *);
};
#endif // DIALOG_H
\ifndef对话框
#定义对话框
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
名称空间用户界面{
类对话框;
}
类对话框:公共QDialog
{
Q_对象
公众:
显式对话框(QWidget*parent=0);
~Dialog();
私人:
Ui::Dialog*Ui;
QNetworkAccessManager*管理器;
QList饼干;
QList-listt;
QNetworkRequest请求;
QNetworkReply*回复;
qvar;
QNetworkCookieJar*cookiejar;
公众时段:
void mySlot(QNetworkReply*);
};
#endif//对话框
dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    manager = new QNetworkAccessManager(this);
    cookiejar = new QNetworkCookieJar(manager);
    connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(mySlot(QNetworkReply*)));

    //login on www
    QByteArray postData;
    QUrl paare;
    request.setUrl(QUrl("http://127.0.0.1/ucp.php?mode=login"));
    request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
    request.setRawHeader("User-Agent", "Firefox/3.0.10");
    paare.addQueryItem("username", "Moderator");
    paare.addQueryItem("password", "moderator");
    paare.addQueryItem("login", "");
    postData = paare.encodedQuery();
    reply = manager->post(request, postData);
    //end of login on www - effect: OK

    //send post on www
    paare.clear();
    postData.clear();
    request.setUrl(QUrl("http://127.0.0.1/posting.php?mode=reply&f=2&t=1"));
    paare.addQueryItem("message", "my message ...");
    paare.addQueryItem("post", "");
    postData = paare.encodedQuery();
    manager->post(request, postData);
    //end of send post on www - effect: fail
}

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

void Dialog::mySlot(QNetworkReply *e)
{
    if( e->error() == QNetworkReply::NoError )
    {
        qDebug() << "OK!";
    }
    else
    {
        qDebug() << "ERROR! " << e->errorString();
    }
}
#包括“dialog.h”
#包括“ui_dialog.h”
Dialog::Dialog(QWidget*父项):
QDialog(父级),
ui(新建ui::对话框)
{
用户界面->设置用户界面(此);
manager=新的QNetworkAccessManager(此);
cookiejar=新QNetworkCookieJar(管理器);
连接(管理器、信号(已完成(QNetworkReply*))、此、插槽(mySlot(QNetworkReply*));
//登录www
QByteArray postData;
库尔帕雷;
request.setUrl(QUrl(“http://127.0.0.1/ucp.php?mode=login"));
setHeader(QNetworkRequest::ContentTypeHeader,QVariant(“application/x-www-form-urlencoded”);
setRawHeader(“用户代理”、“Firefox/3.0.10”);
paare.addQueryItem(“用户名”、“主持人”);
paare.addQueryItem(“密码”、“版主”);
paare.addQueryItem(“登录”,“登录”);
postData=paare.encodedQuery();
回复=经理->发布(请求、发布数据);
//在www上登录结束-效果:OK
//在www上发帖
paare.clear();
postData.clear();
request.setUrl(QUrl(“http://127.0.0.1/posting.php?mode=reply&f=2&t=1"));
paare.addQueryItem(“消息”,“我的消息…”);
paare.addQueryItem(“post”和“);
postData=paare.encodedQuery();
经理->发布(请求、发布数据);
//www上发送帖子的结束-效果:失败
}
对话::~Dialog()
{
删除用户界面;
}
void Dialog::mySlot(QNetworkReply*e)
{
如果(e->error()==QNetworkReply::NoError)
{
qDebug()post(请求,postData);
//在www上登录结束-效果:OK
}
对话::~Dialog()
{
删除用户界面;
}
void Dialog::mySlot(QNetworkReply*e)
{
如果(e->error()==QNetworkReply::NoError)
{

qDebug()您在发送登录请求后,在完成manager()之前,立即发布消息。 因此,当您发送消息请求时,您的登录会话将不会启动。 将消息发送代码放入mySlot()中

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    manager = new QNetworkAccessManager(this);
    cookiejar = new QNetworkCookieJar(manager);
    connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(mySlot(QNetworkReply*)));

    //login on www
    request.setUrl(QUrl("http://127.0.0.1/ucp.php?mode=login"));
    request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
    request.setRawHeader("User-Agent", "Firefox/3.0.10");
    paare.addQueryItem("username", "Moderator");
    paare.addQueryItem("password", "moderator");
    paare.addQueryItem("login", "");
    postData = paare.encodedQuery();
    reply = manager->post(request, postData);
    //end of login on www - effect: OK
}

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

void Dialog::mySlot(QNetworkReply *e)
{
    if( e->error() == QNetworkReply::NoError )
    {
        qDebug() << "OK!";
        qDebug() << e->realAll();
    }
    else
    {
        qDebug() << "ERROR! " << e->errorString();
    }

    //send post on www
    paare.clear();
    postData.clear();
    request.setUrl(QUrl("http://127.0.0.1/posting.php?mode=reply&f=2&t=1"));
    paare.addQueryItem("message", "my message ...");
    paare.addQueryItem("post", "");
    postData = paare.encodedQuery();
    manager->post(request, postData);
    //end of send post on www - effect: fail
}