博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用QHttp与C#编写的服务端交互(编译环境mingw)
阅读量:5157 次
发布时间:2019-06-13

本文共 3737 字,大约阅读时间需要 12 分钟。

打开qtcreator,新建一个项目,然后加一个头文件及源代码文件,如下:

QtHttp.h:

#ifndef QTHTTP_H
#define QTHTTP_H
#include 
#include 
#include 
#include 
#include 
 
class QtHttp : QObject {
Q_OBJECT
public:
QtHttp();
virtual ~QtHttp();
private:
QHttp *http;
QByteArray httptext;
public slots:
void on_PushButtonPost_clicked();
void on_http_stateChanged(int stat);
void on_http_dataReadProgress(int done, int total);
void on_http_dataSendProgress(int done, int total);
void on_http_done(bool error);
void on_http_requestFinished(int id, bool error);
void on_http_requestStarted(int id);
void on_http_responseHeaderReceived(const QHttpResponseHeader &resp);
};
 
 
#endif // QTHTTP_H
 

 

 

QtHttp.cpp:

#include "QtHttp.h"
QtHttp::QtHttp() {
    http = new QHttp();
    http->setObjectName("http");
    connect(http, SIGNAL(stateChanged(int)), this, SLOT(on_http_stateChanged(int)));
    connect(http, SIGNAL(dataReadProgress(int, int)), this, SLOT(on_http_dataReadProgress(int, int)));
    connect(http, SIGNAL(dataSendProgress(int, int)), this, SLOT(on_http_dataSendProgress(int, int)));
    connect(http, SIGNAL(done(bool)), this, SLOT(on_http_done(bool)));
    connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(on_http_requestFinished(int, bool)));
    connect(http, SIGNAL(requestStarted(int)), this, SLOT(on_http_requestStarted(int)));
    connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(on_http_responseHeaderReceived(const QHttpResponseHeader &)));
}
QtHttp::~QtHttp() {
    delete http;
    http = NULL;
}
void QtHttp::on_http_stateChanged(int stat)
{
    switch (stat)
    {
        case QHttp::Unconnected : qDebug() << "Unconnected\n" ;
              break;
        case QHttp::HostLookup : qDebug() << "HostLookup\n" ;
              break;
        case QHttp::Connecting : qDebug() << "Connecting\n" ;
              break;
        case QHttp::Sending : qDebug() << "Sending\n" ;
              break;
        case QHttp::Reading : qDebug() << "Reading\n" ;
              break;
        case QHttp::Connected : qDebug() << "Connected\n" ;
              break;
        case QHttp::Closing : qDebug() << "Closing\n" ;
              break;
    }
}
void QtHttp::on_http_dataReadProgress(int done, int total)
{
    qDebug() << "Downloaded " << done << " bytes " << " out of " << total << "\n";
}
void QtHttp::on_http_dataSendProgress(int done, int total)
{
    qDebug() << "Sended " << done << " bytes " << " out of " << total << "\n";
}
void QtHttp::on_http_done(bool error)
{
    if (error)
    {
        qDebug() << http->errorString() << "\n";
    }
    else
    {
        qDebug() << "Session finished successfully\n";
        //buffer.close();
              httptext = http->readAll();
        qDebug() << "Received Size: " << httptext.count() << "\n";
        QString strSource(httptext);
        qDebug() << httptext;
    }
}
void QtHttp::on_http_requestFinished(int id, bool error)
{
    qDebug() << id <<" Request Finished\n";
    if (error)
    {
        qDebug() << "with errors\n";
        qDebug() << http->errorString() << "\n";
    }
    else
    {
        qDebug() << " successfully \n";
    }
}
void QtHttp::on_http_requestStarted(int id)
{
    qDebug() << "Request Started\n";
}
void QtHttp::on_http_responseHeaderReceived(const QHttpResponseHeader &resp)
{
    qDebug() << "HTTP response header received \n";
}
void QtHttp::on_PushButtonPost_clicked()
{
    QString data("name=你好中国&id=1234567890&addr=asdfghjkl");
    //http.post("http://localhost/biselaw/SalesReport.xml", data, &file);
    /*
    buffer.setData(httptext);
    buffer.open(QIODevice::WriteOnly);
    */
    qDebug() << "Post Data: " << data << "\n";
    http->setHost("localhost");
    //http->post("/biselaw/vote.php", data.toUtf8());
    QHttpRequestHeader header("POST", "/temp/default.aspx") ;
    header.setValue("Host", "localhost") ;
    header.setContentType("application/x-www-form-urlencoded");
    http->request(header, data.toUtf8()) ;
    //QString strBuffer(httptext);
    //TextEditHttp->setHtml(strBuffer);
}

 注意还需要在qt.pro里加上

QT += network 

 才能编译,应该是引用库吧

 

 

 

转载于:https://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/12/02/2798461.html

你可能感兴趣的文章
ecshop 团购点击价格变动
查看>>
ecshop商品-》购买记录
查看>>
webpack学习(一):webpack 介绍&安装&常用命令
查看>>
MySQL 分组后取每组前N条数据
查看>>
jQuery EasyUI Combobox无法检索中文输入的问题
查看>>
sql server 2008 R2突然用windows和sa都无法登录。昨天都还能登陆,今天突然不行。...
查看>>
PHP中json_encode后,在json字符串中依然显示中文的解决方案
查看>>
zookeeper windows 入门安装和测试
查看>>
苹果ios用js的Date() 获取到的日期时间 显示NaN
查看>>
土办法解决日期转换问题,转出格式为。。。 贰零壹陆年零壹月零捌日
查看>>
Redis实现简单消息队列
查看>>
字母替换
查看>>
spring 数据库字段映射
查看>>
jQuery中的prop()和attr()的区别
查看>>
MySql常用命令总结
查看>>
C语言中的指针学习(小黑板)
查看>>
Android 天气预报入门
查看>>
英,克莱儿•麦克福尔著,付强译《摆渡人2重返荒原》
查看>>
1、线性代数--第一章(行列式)
查看>>
字符串操作、文件操作,英文词频统计预处理
查看>>