QT之Http请求
今天我们介绍一下QT的http请求,这里有post和get两种方式
一、post请求方式:参数分为网址和具体请求值两个部分,有时候还需要设置头信息,看具体情况定
void MainWindow::sendPostRequest()
{
QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
//设置url
QString url = "http://10.0.0.20:8005/order/charge";
//设置头信息
QNetworkRequest requestInfo;
requestInfo.setUrl(QUrl(url));
requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
// requestInfo.setRawHeader("Content-Type","application/json");//服务器要求的数据头部
// requestInfo.setRawHeader("Accept","text/json,*/*;q=0.5");//服务器要求的数据头部 //发送数据
QByteArray qByteHttpData = sendJson();
QNetworkReply *reply = m_pHttpMgr->post(requestInfo, qByteHttpData);
//添加事件循环机制,返回后再运行后面的
QEventLoop eventLoop;
connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec(); //block until finish //错误处理
if (reply->error() == QNetworkReply::NoError)
{
qDebug() << "request protobufHttp NoError";
}
else
{
qDebug()<<"request protobufHttp handle errors here";
QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
//statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
qDebug(qPrintable(reply->errorString()));
} //请求收到的结果
QByteArray responseByte = reply->readAll();
}
二、get请求方式:参数和网址拼接到一起请求
void MainWindow::sendGetRequest()
{
QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
//设置url
QString url = "http://10.0.0.20:8005/vending_machine/items/ac83f39ea268";//fae4b325e52c
QNetworkRequest requestInfo;
requestInfo.setUrl(QUrl(url)); //添加事件循环机制,返回后再运行后面的
QEventLoop eventLoop;
QNetworkReply *reply = m_pHttpMgr->get(requestInfo);
connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec(); //block until finish
//错误处理
if (reply->error() == QNetworkReply::NoError)
{
qDebug() << "request protobufHttp NoError";
}
else
{
qDebug()<<"request protobufHttp handle errors here";
QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
//statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
qDebug(qPrintable(reply->errorString()));
}
//请求返回的结果
QByteArray responseByte = reply->readAll();
qDebug() << responseByte;
}
三、主要区别:
get用于请求获取数据,post向指定的资源创建修改数据
get把参数包含在URL中(长度有限制),POST通过请求实体传递参数(安全)

QT之Http请求的更多相关文章
- Qt发送HTTP请求
http://hi.baidu.com/cmdmac/item/c45b9f0fb0d0938802ce1bbd 最近在搞QT跟服务器交互的东西,自然少不了发送和接受HTTP请求.在网上找了一些资料知 ...
- Qt 发送 https 请求
1.环境 ubuntu 12.04 Qt库版本 4.8.1(安装包是Nokia时期的sdk,现在已经不好找了) 2.网上一查都说 Qt 默认不支持Openssl,心想那https也肯定用不了啊,然后屁 ...
- QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)
以VS开发为例.因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com ...
- QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种)
因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com/product ...
- 使用Qt发送HTTPS请求
示例代码: #include "mainwindow.h" #include "ui_mainwindow.h" #include <QNetworkAc ...
- qt截获html请求(继承QNetworkAccessManager和QNetworkReply)
QtWebkit加载html页面,html中会有很多的请求,比如<img id="testImg" src="http://*.jpg" width=&q ...
- Qt tip 网络请求 QNetworkRequest QJason 处理 JSON
http://blog.csdn.net/linbounconstraint/article/details/52399415 http://download.csdn.net/detail/linb ...
- Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)
一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...
- Qt 学习之路:线程总结
前面我们已经详细介绍过有关线程的一些值得注意的事项.现在我们开始对线程做一些总结. 有关线程,你可以做的是: 在QThread子类添加信号.这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送 ...
随机推荐
- [Swift]LeetCode252.会议室 $ Meeting Rooms
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...
- [Swift]LeetCode599. 两个列表的最小索引总和 | Minimum Index Sum of Two Lists
Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...
- [Swift]LeetCode691. 贴纸拼词 | Stickers to Spell Word
We are given N different types of stickers. Each sticker has a lowercase English word on it. You wou ...
- CoCos2dx开发:PC端调试运行正常但打包apk文件后在手机上点击闪退
记:今天调试时出现的一个PC端调试运行正常,但打包apk文件后在手机上点击闪退的问题. 可能在不同的情况条件下,会有不同的原因导致apk安装后闪退问题.拿android studio等软件来说,开发安 ...
- Python档案袋(列表、元组、字典、集合 )
列表 可以同名,有序(通过下标可找到) 取值: 1 #声明列表 2 listx=["L0","L1","L2",33,"L4&qu ...
- iOS学习——Quartz2D学习之DrawRect
Quartz2D学习之DrawRect 本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料. 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Ma ...
- 英语笔记3(git)
备注 一: Staging Modified Files Let’s change a file that was already tracked. (tracked 表示该文件已经被git管理过,再 ...
- BBS论坛(十四)
14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import BaseForm ...
- css3的动画特效--元素旋转(transition,animation)
开发中,视觉要你实现一个元素的旋转问题,比如说如下图所示: 思路:首先动画动效肯定离不开anmimation动画. 和transition动画一样,animation动画也是CSS3动画的一种,这类动 ...
- 如何在.NET Core控制台程序中使用依赖注入
背景介绍 依赖注入(Dependency Injection), 是面向对象编程中的一种设计原则,可以用来减低代码之间的耦合度.在.NET Core MVC中 我们可以在Startup.cs文件的Co ...