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");
- header.setValue("Host", "127.0.0.1");
- QHttp http;
- http.setHost("127.0.0.1",8080);
- int http_request_id=http.request(header);
-
- http.close();
2、使用POST方式,通过request函数向服务器传递参数- QHttpRequestHeader header("POST", "/MyWebApp/MyJsp.jsp");
- header.setValue("Host", "127.0.0.1");
- header.setContentType("application/x-www-form-urlencoded");
-
- QHttp http;
- http.setHost("127.0.0.1",8080);
- int http_request_id=http.request(header,QString("code=1&account=10&pwd=12").toUtf8());
-
- http.close();
好了,我们会发现,GET方式的参数是在页面的path中掺杂出现的;而POST方式的参数是在QHttp::request()函数执行时单独添加的,特别要注意的是,如果使用POST方式传递参数,一定要记得设置ContentType为“application/x-www-form-urlencoded”,否则服务器端找不到这些参数!原文首发:
阅读(1183) | 评论(0) | 转发(0) |