Qt中使用QHttp连接网站服务器,并传递参数
2017-05-26 16:01
1076 查看
Qt中使用QHttp连接网站服务器,并传递参数(使用QHttp::request()函数实现)
时间 2012-04-21 21:10:02 CSDN博客原文 http://blog.csdn.net/lslxdx/article/details/7485297
主题 Qt Web服务器 PHP
Qt里提供QHttp实现Qt代码与Http服务器通信,提供GET、POST两种发送请求的方式,做过网站的同学们应该知道,前者用于传递少量数据,而后者用于传递大量数据,多大呢?应该是大于1024个字符吧~比如100+KB或1MB+以上算是比较大了!
但是,如 QHttp详解 所讲,QHttp原生提供的get和post函数不能传递参数,只能单纯的访问页面,不能向页面传递参数,可以说功能是非常简单的。
为了向服务器传递参数,我知道的有两种方式:
一、使用QNetworkAccessManager代替QHttp访问http服务器,QNetworkAccessManager是QHttp的一个更高层次的封装,用起来非常简单。可以参考 Qt官网上的实例 。
二、坚持使用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或名字 QHttp http; http.setHost("127.0.0.1",8080);//给QHttp设置主机IP和端口号 int http_request_id=http.request(header);//发送请求 http.close();//关闭请求,建议关上,因为close后,会flush输出缓冲区~
2、使
4000
用POST方式,通过request函数向服务器传递参数
QHttpRequestHeader header("POST", "/MyWebApp/MyJsp.jsp");//只设置页面的路径path,待发送的参数不能写在这里! header.setValue("Host", "127.0.0.1"); header.setContentType("application/x-www-form-urlencoded");//必须设置! QHttp http; 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”,否则服务器端找不到这些参数!
相关文章推荐
- Qt中使用QHttp连接网站服务器,并传递参数(使用QHttp::request()函数实现)
- Qt中使用mysql连接远程服务器
- QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)
- Qt学习:线程间共享数据(使用信号槽传递数据,必须提前使用qRegisterMetaType来注册参数的类型)
- 使用VS2010 beta2连接Codeplex网站的TFS服务器
- 【Phalcon实现高性能网站】使用Phalcon高性能PHP框架搭建网站 视图之传递参数
- Qt使用connect函数时向slot传递参数:使用lambda表达式
- Qt中使用mysql连接远程服务器
- volley框架下,使用post方式请求服务器,传递参数和头
- Flex4使用RemoteObject时前台传递参数与服务器方法参数映射
- Qt使用connect函数时向slot传递参数
- jsp使用URL编码传递中文参数问题※※jsp传递中文参数乱码问题
- 奇怪问题:使用Request.QueryString传递一个中文参数,结果少了一个字!
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- 使用NCindy连接需要TLS的服务器
- SQL中两台服务器间使用连接服务器
- 工具推荐:如何部署使用“远程桌面Web连接”,并且扩展它,可以连接非3389端口的远程桌面,(服务器管理员必备)
- 浅谈TC、BC和汇编混合编程连接技术及参数传递方法
- 使用匿名函数为setInterval传递参数
- 使用Hashtable传递参数在jasperreport新版本中引发的问题