1. 新建项目T12HttpClient

T12HttpClient.pro

SOURCES += \

main.cpp

QT += network

CONFIG += C++11

main.cpp

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
 
int main(int argc,char* argv[])
{
    QCoreApplication app(argc, argv);
    QNetworkAccessManager* manager = new QNetworkAccessManager;
 
QNetworkRequest req;
//这里,我访问的是tomcat服务器
    req.setUrl(QUrl("http://localhost:8080/"));
    manager->get(req);
    QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){
        if(reply->error() != QNetworkReply::NoError)
        {
            qDebug() << "Error:" << reply->errorString();
            return;
        }
        QByteArray buf = reply->readAll();
        qDebug() << "OK:"<< buf;
    });
 
    return app.exec();
}

运行结果:

Json数据传输

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonObject>
#include <QJsonDocument>
 
/**
 * json 数据传输
 * @brief main
 * @param argc
 * @param argv
 * @return 
 */
int main(int argc,char* argv[])
{
    QCoreApplication app(argc, argv);
    QNetworkAccessManager* manager = new QNetworkAccessManager;
 
    QJsonObject obj;
    obj.insert("username", QString("tuzuoquan"));
    obj.insert("password", QString("tuzuoquan's password"));
 
    QNetworkRequest req;
    req.setUrl(QUrl("http://XXX/test.cgi"));
    manager->post(req, QJsonDocument(obj).toJson());
    QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){
        if(reply->error() != QNetworkReply::NoError)
        {
            qDebug() << "Error:" << reply->errorString();
            return;
        }
        QByteArray buf = reply->readAll();
        qDebug() << "OK:"<< buf;
    });
 
    return app.exec();
}

关于cgi的代码

#include <stdio.h>

#include <unistd.h>

#include <QCoreApplication>

#include <QTcpSocket>

#include <QJsonDocument>

#include <QJsonObject>

#include <QProcessEnvironment>

int main(int argc, char* argv[])

{

printf("Content-type:text/html\n\n");

QCoreApplication app(argc, argv);

QProcessEnvironment envir =

QProcessEnvironment::systemEnvironment();

int contentLen = envir.value("CONTENT_LENGTH").toInt();

QTcpSocket socket;

socket.setSocketDescriptor(STDIN_FILENO,

QTcpSocket::ConnectedState,

QTcpSocket::ReadOnly);

QByteArray buf;

QObject::connect(&socket, &QTcpSocket::readyRead, [&](){

buf += socket.readAll();

if(buf.size()  == contentLen)

{

QJsonDocument doc = QJsonDocument::fromJson(buf);

QJsonObject obj = doc.object();

#if 1

QString username = obj.value("username").toString();

QString password = obj.value("password").toString();

printf("username is %s; password is %s",

username.toUtf8().data(), password.toUtf8().data());

#else

QSqlTableModel model;

model.setTable("tuser");

model.setFilter("username='xx'");

model.select();

if(model.rowCount() == 1)

printf("Login success");

else

printf("Login Error");

#endif

app.quit();

}

});

return app.exec();

}

上面的程序代码说明,我们可以通过post的方式顺便发送Json数据给服务器!

5.QT中关于HTTPClient相关的操作,Json数据传输相关推荐

  1. Qt中与文件目录相关操作

    一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...

  2. Head First Python-Python中与文件相关的操作-读、处理、写

    最近在看head first python,前面也写了一些笔记,但是基本上没有涉及到一些完整的代码,现在将书中的文件相关操作的代码整理,供以后参考. 主要分为两大部分,读取文件.处理异常,处理文件.存 ...

  3. 3.QT中的debug相关的函数,以及文件锁的使用

     1  新建项目T33Debug main.cpp #include <QDebug> #include <QFile> #include <QMutex>   ...

  4. QT中读写.ini配置文件的操作

    ini 文件(即Initialization file):这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个K ...

  5. qt中提升控件的操作

    我的代码里面自己写了一个类myview,继承自QGraphicsView,然后就把拖到界面上的QGraphicsView控件通过提升控件的方式替换成自己的myview类. 先在工具栏拖一个QGraph ...

  6. 15、TWS API和IB中的期权相关的操作

    Option Chains 给定证券的Option Chains可以使用函数 reqContractDetails 返回.如果期权合约的定义不完整(例如行使价未定义)并用作 IBApi::EClien ...

  7. qt 中 使用 opengl 上下文 (context) 相关的注意事项

    qt 中 使用 opengl 相关的注意事项 本人移植了一个glut到qt的项目,前期没有注意相关的上下文的使用,导致相关的显示混乱. 解决方案 makeCurrent();在每一个类函数中加上这一句 ...

  8. Qt中使用html语言对word进行图表操作

    参考文献: http://www.cnblogs.com/softwaretesting/archive/2011/07/29/2121593.html http://www.2cto.com/kf/ ...

  9. Qt中的QMainWindow

    文章目录 1 Qt中的QMainWindow简介 1.1 应用程序中的主窗口 1.2 QMainWindow 2 QMainWindow中的菜单栏 3 QMainWindow中的工具栏 4 QMain ...

最新文章

  1. Bitmap的一个简单实现
  2. 【预言】分布式缓存成为操作系统的一部分
  3. MySQL客户端和服务器端工具集
  4. 英语发音规则---发/i:/的字母及字母组合
  5. 数据分析师被老板问住了——场面一度非常尴尬。
  6. java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 并发编程之多线程线程安全(下)
  8. mysql性能优化较佳实践_MySQL性能优化的21个最佳实践 和 mysql使用索引
  9. 谷歌和ESRI眼中的Web Mercator
  10. 转 TCP中的序号和确认号
  11. 码农的奋斗之路 富爸爸穷爸爸系列--提高你的财商 读后感
  12. 传智播客风清扬视频-------IO简述之字符流常用实现类
  13. 中国睫毛生长液行业市场供需与战略研究报告
  14. Docker入门实战笔记
  15. Java面向对象常见概念
  16. Android 屏幕保护程序制作及源码
  17. 改变一生的经济学规律
  18. python:用OLS 求企业的净利润年平均增长率
  19. 如何在Android上设置默认短信应用
  20. 免费注册 Redhat 开发者订阅和激活订阅

热门文章

  1. VTK:图像方差用法实战
  2. VTK:背景颜色BackgroundColor用法实战
  3. OpenCASCADE绘制测试线束:OCAF 命令之树属性命令
  4. wxWidgets:实现框架构造器
  5. boost::mp11::mp_partition相关用法的测试程序
  6. boost::json::value用法的测试程序
  7. boost::hana::detail::first_unsatisfied_index用法的测试程序
  8. boost::convert模块实现默认转换器fail失败的测试程序
  9. boost::contract模块日历的测试程序
  10. Boost:使用静态c ++内核语言扩展以进行编译和 执行模板化的c ++内核