5.QT中关于HTTPClient相关的操作,Json数据传输
新建项目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数据传输相关推荐
- Qt中与文件目录相关操作
一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...
- Head First Python-Python中与文件相关的操作-读、处理、写
最近在看head first python,前面也写了一些笔记,但是基本上没有涉及到一些完整的代码,现在将书中的文件相关操作的代码整理,供以后参考. 主要分为两大部分,读取文件.处理异常,处理文件.存 ...
- 3.QT中的debug相关的函数,以及文件锁的使用
1 新建项目T33Debug main.cpp #include <QDebug> #include <QFile> #include <QMutex> ...
- QT中读写.ini配置文件的操作
ini 文件(即Initialization file):这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个K ...
- qt中提升控件的操作
我的代码里面自己写了一个类myview,继承自QGraphicsView,然后就把拖到界面上的QGraphicsView控件通过提升控件的方式替换成自己的myview类. 先在工具栏拖一个QGraph ...
- 15、TWS API和IB中的期权相关的操作
Option Chains 给定证券的Option Chains可以使用函数 reqContractDetails 返回.如果期权合约的定义不完整(例如行使价未定义)并用作 IBApi::EClien ...
- qt 中 使用 opengl 上下文 (context) 相关的注意事项
qt 中 使用 opengl 相关的注意事项 本人移植了一个glut到qt的项目,前期没有注意相关的上下文的使用,导致相关的显示混乱. 解决方案 makeCurrent();在每一个类函数中加上这一句 ...
- Qt中使用html语言对word进行图表操作
参考文献: http://www.cnblogs.com/softwaretesting/archive/2011/07/29/2121593.html http://www.2cto.com/kf/ ...
- Qt中的QMainWindow
文章目录 1 Qt中的QMainWindow简介 1.1 应用程序中的主窗口 1.2 QMainWindow 2 QMainWindow中的菜单栏 3 QMainWindow中的工具栏 4 QMain ...
最新文章
- Bitmap的一个简单实现
- 【预言】分布式缓存成为操作系统的一部分
- MySQL客户端和服务器端工具集
- 英语发音规则---发/i:/的字母及字母组合
- 数据分析师被老板问住了——场面一度非常尴尬。
- java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...
- 并发编程之多线程线程安全(下)
- mysql性能优化较佳实践_MySQL性能优化的21个最佳实践 和 mysql使用索引
- 谷歌和ESRI眼中的Web Mercator
- 转 TCP中的序号和确认号
- 码农的奋斗之路 富爸爸穷爸爸系列--提高你的财商 读后感
- 传智播客风清扬视频-------IO简述之字符流常用实现类
- 中国睫毛生长液行业市场供需与战略研究报告
- Docker入门实战笔记
- Java面向对象常见概念
- Android 屏幕保护程序制作及源码
- 改变一生的经济学规律
- python:用OLS 求企业的净利润年平均增长率
- 如何在Android上设置默认短信应用
- 免费注册 Redhat 开发者订阅和激活订阅
热门文章
- VTK:图像方差用法实战
- VTK:背景颜色BackgroundColor用法实战
- OpenCASCADE绘制测试线束:OCAF 命令之树属性命令
- wxWidgets:实现框架构造器
- boost::mp11::mp_partition相关用法的测试程序
- boost::json::value用法的测试程序
- boost::hana::detail::first_unsatisfied_index用法的测试程序
- boost::convert模块实现默认转换器fail失败的测试程序
- boost::contract模块日历的测试程序
- Boost:使用静态c ++内核语言扩展以进行编译和 执行模板化的c ++内核