Qt Httpajax请求超时设置怎么设置超时时间

博客访问: 435371
博文数量: 78
博客积分: 0
博客等级: 民兵
技术积分: 159
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
本文将介绍如何通过QNetworkAccessManager post http 请求,接下来我们将看下具体实现
class QunarNetwork&: public QObject
QunarNetwork(QObject *parent = 0);
void response(int len);
void error(int errCode);
public slots:
void post(QString strUrl);
void replyFinished(QNetworkReply* reply);
QNetworkAccessManager* m_
#include "qunarNetwork.h"
QunarNetwork::QunarNetwork(QObject *parent)&:
QObject(parent)
m_manager = new QNetworkAccessManager(this);
connect(m_manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
void QunarNetwork::replyFinished(QNetworkReply *reply)
if(reply && reply->error() == QNetworkReply::NoError) {
QByteArray data = reply->readAll();
int len = data.size();
emit this->response(len);
emit this->error((int)reply->error());
reply->close();
void QunarNetwork::post(QString strUrl)
request.setUrl(QUrl(strUrl));
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
m_manager->post(request, QByteArray("uid=&vid=&cid=C1000&pid=10010&gid=9631B6DF-88E8-7ADA-C2F7-1CA3E07593FB&t=fmixwaylist&ke=691EE20AB30A4EBAC5&param=B15A7EA2ABEFAFAEAF756F65625AAF91B1FFACBABD5E767EBDAD9C9BACB99E9AB89EB0BAA7AF616B666DAA94A1ADAA9A69FAEBBADB0BBAA666BBA939B68&cp=2&re=0"));
值得说明的是,在post方法中,我们需要构造一个http 报文,通过setHeader() 函数构建报文头,post的第二个参数 跟的是 post 报文体。
Add categories below. Remove Category:Draft when the page is complete or near complete
阅读(5832) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。&>&基于Qt的Http请求小程序
基于Qt的Http请求小程序
上传大小:7KB
基于Qt的Http请求小程序,输入地址,可请求网站信息并展示。简单演示http请求。发起请求,响应返回,超时机制。
涉及类:QNetworkAccessManager、QNetworkReply、QNetworkRequst。配合博文http://blog.csdn.net/lankin2013/article/details/
综合评分:4.5(19位用户评分)
下载个数:457
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有12条
不错,正好合适参考
不错不错喔~
不错 学习了,封装的很好。
有参考价值,谢谢
正好需要,谢谢分享
有参考价值,不错!
有参考价值,谢谢
非常感谢!
代码不错,运行正常,值得学习
还不错 挺好!!
审核通过送C币
软件工程毕业设计之基于MFC的手机生产制造执行系统的设计与开发
CString字符串操作大全
创建者:zrx281731
C++11/14书籍
创建者:feiqiu2015
上传者其他资源上传者专辑
Qt 正则表达式例程
基于Qt的sqlite编程
基于Qt的xml解析
Qt输入法事件 QInputMethodEvent
matlab基础及其应用教程
开发技术热门标签
VIP会员动态
下载频道用户反馈专区
下载频道积分规则调整V1710.18
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
基于Qt的Http请求小程序
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
基于Qt的Http请求小程序下次自动登录
现在的位置:
& 综合 & 正文
Qt中使用QHttp连接网站服务器,并传递参数(使用QHttp::request()函数实现)
Qt里提供QHttp实现Qt代码与Http服务器通信,提供GET、POST两种发送请求的方式,做过网站的同学们应该知道,前者用于传递少量数据,而后者用于传递大量数据,多大呢?应该是大于1024个字符吧~比如100+KB或1MB+以上算是比较大了!
但是,如所讲,QHttp原生提供的get和post函数不能传递参数,只能单纯的访问页面,不能向页面传递参数,可以说功能是非常简单的。
为了向服务器传递参数,我知道的有两种方式:
一、使用QNetworkAccessManager代替QHttp访问http服务器,QNetworkAccessManager是QHttp的一个更高层次的封装,用起来非常简单。可以参考。
二、坚持使用QHttp,但是要使用request函数发送http请求,而不是get或post函数。我这里主要讲下这种方法^_^
request函数需要一个QHttpRequestHeader,有的还需要一个QByteArray参数用于存放要向服务器发送的参数,这倒不是主要的。主要的是这个QHttpRequestHeader怎么设置!
直接上代码:
1、使用GET方式,通过request函数向服务器传递参数
QHttpRequestHeader header("GET", "/MyWebApp/MyJsp.jsp?code=1&account=10&pwd=12");//需要传递的参数直接写在path中
header.setValue("Host", "127.0.0.1");//必须设置主机IP或名字
http.setHost("127.0.0.1",8080);//给QHttp设置主机IP和端口号
int http_request_id=http.request(header);//发送请求
http.close();//关闭请求,建议关上,因为close后,会flush输出缓冲区~
2、使用POST方式,通过request函数向服务器传递参数
QHttpRequestHeader header("POST", "/MyWebApp/MyJsp.jsp");//只设置页面的路径path,待发送的参数不能写在这里!
header.setValue("Host", "127.0.0.1");
header.setContentType("application/x-www-form-urlencoded");//必须设置!
http.setHost("127.0.0.1",8080);//给QHttp设置主机IP和端口号
int http_request_id=http.request(header,QString("code=1&account=10&pwd=12").toUtf8());//发送请求,注意,这里要使用需要QByteArray参数的request函数重载版本,用于向服务器发送参数
http.close();//关闭请求,建议关上,因为close后,会flush输出缓冲区~
好了,我们会发现,GET方式的参数是在页面的path中掺杂出现的;而POST方式的参数是在QHttp::request()函数执行时单独添加的,特别要注意的是,如果使用POST方式传递参数,一定要记得设置ContentType为“application/x-www-form-urlencoded”,否则服务器端找不到这些参数!
我是折腾了一下午+一晚上才搞明白的,希望对大家有所帮助!
以下是些参考资料:
1、(对Get和Post讲得很透彻)
2、(个人感觉,这篇博文非常好!)
3、(算是个扩展阅读)
&&&&推荐文章:
【上篇】【下篇】Qt5 http协议 获取网页数据 - jiangsion - 博客园
一、HTTP协议
    Qt网络模块提供的API可以实现基于HTTP(Hyper Text Transport Protocol)协议的应用程序。此外, Qt还可以实现多种基于
  协议的应用程序, 如位于OSI 7层应用层的FTP、DNS、SNMP。
    Qt4.x版本提供了QHttp和QFtp类以支持HTTP和FTP协议。从Qt 5.0 版本开始, 删除了QHttp 和 QFtp 类, 通过QNetworkReply
  、QNetworkAccessManager、QNetworkRequest类实现基于HTTP和FTP协议的应用程序。除了HTTP和FTP协议外, 该类还可以实
  现高层(OSI 7层中的上层)网络应用程序。
    ①&QNetworkRequest类,&通过网络请求是使用。而且, 可以请求包含头信息和加密(encryption)的头信息。&QNetworkRequest可
  以通过URL上传和下载HTTP、FTP的本地文件。
    ② QNetworkAccessManager &类用于管理网络请求和响应, 可以在网络上管理请求 和 响应的设置, 使用代理和缓存,
  处理网络请求和响应过程中触发的信号。
    ③&QNetworkReply类用于在网络上处理响应, 它是QIODevice的子类, 支持同步异步的方式。
二、代码示例
  下面是一个获取百度天气的代码:
  ① 环境为vs2013 + qt5.7
  ② 创建Qt5 Gui QApplication工程
  ③ 在ui中添加textBrowser, 用于展示获取到的数据
  ④ 源码展示
/*头文件*/
#ifndef NETWORKWIDGET_H
#define NETWORKWIDGET_H
#include &QtNetwork/QNetworkAccessManager&
#include &QtNetwork/QNetworkRequest&
#include &QtNetwork/QNetworkReply&
#include &QtWidgets/QWidget&
#include &QTextCodec&
#include &QString&
#include &QUrl&
#include "ui_networkWidget.h"
class networkWidget : public QWidget
networkWidget(QWidget *parent = <span style="color: #);
~networkWidget();
private Q_SLOTS:
void slot_replayFinished(QNetworkReply *reply);
Ui::networkWidgetC
QNetworkAccessManager *m_
//QNetworkReply *m_
#endif // NETWORKWIDGET_H
/*实现文件*/
#include "networkWidget.h"
networkWidget::networkWidget(QWidget *parent)
: QWidget(parent)
ui.setupUi(this);
this-&setWindowFlags(Qt::FramelessWindowHint);
m_manager = new QNetworkAccessManager(this);//新建QNetworkAccessManager对象
connect(m_manager, SIGNAL(finished(QNetworkReply
*)), this, SLOT(slot_replayFinished(QNetworkReply*))); //关联信号和槽
m_manager-&get(QNetworkRequest(QUrl("/microservice/weather?cityid=成都")));//发送请求
networkWidget::~networkWidget()
void networkWidget::slot_replayFinished(QNetworkReply *reply)
QTextCodec *codec = QTextCodec::codecForName("utf8");
//使用utf8编码, 这样可以显示中文
QString str = codec-&toUnicode(reply-&readAll());
ui.textBrowser-&setText(str);
reply-&deleteLater();//最后要释放replay对象
#include "networkWidget.h"
#include &QtWidgets/QApplication&
int main(int argc, char *argv[])
QApplication a(argc, argv);
return a.exec();
&三、运行程序崩溃
    编译能够通过, 运行程序崩溃,崩溃在发送请求第十行, &最初以为是内存泄漏才造成的堆区损坏, 查看官方文档用法发现我们的代码
  根本没有错, 最后用Qt&Creator创建工程测试发现我们的代码完全没有问题, 获取数据成功。 最后确定肯定是vs配置中没有Qt5的依赖
  库。下面是错误截图:
  解决办法: 右击工程-& 配置属性 -& 链接器 -& 输入 -& 附加依赖项, 发现依赖可以种包含的lib都是带d, 而我现在用的是debug模式, 所以我
       加入Qt5Core.lib、Qt5Gui.lib, 最后运行不在崩溃, 成功获取数据。
       Qt中的所有lib库都位于Qt的安装路径lib文件下, 如:C:\Qt\Qt5.7.0\5.7\msvc2013_64\lib
    注: 带d的库是用于debug模式, 不带d的是用于Release模式
四、结果展示

我要回帖

更多关于 apache 请求超时设置 的文章

 

随机推荐