1. 利用Qt 网络类:

QNetworkAccessManager 、QNetworkReply、 QNetworkRequest

2. 要知道的知识:

每一种语言在实现网络接口的时候,都会有自己的实现类。而我们又知道网络协议一般来说分为7层,所有的应用都是建立在此基础之上,它们是标准协议,每一种语言都通用且必须严格遵守。举例说明,譬如socket工作在传输层,Http中的post/get工作在应用层。所以我们可以得出这样的结论:无论java、c、c++、Qt 或者其他语言,只要他们实现了socket、http,那么一定可以实现数据通信。本文章将实例讲解 Qt的http类与Tomcat服务器中的java servelt类之间的数据通信。

提示:本实例仅为测试通信,界面一个按钮,一个文本框(暂时无用,待完善)。Qt提交数据,tomcat中java类接收输出

运行结果:(本实验用的交叉编译器,linux下实验过成功运行)

Qt界面

myeclipse输出:

直接放代码,注释在代码中:

本文的所有工程源码在资源中,可以下载参考:http://download.csdn.net/detail/guomutian911/7115883

Qt代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QDebug>
#include <QtGui>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QtNetwork>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();QString str;public:// QPushButton* pushButton;private:Ui::MainWindow *ui;QNetworkAccessManager *nam;QNetworkReply *reply;public slots:void push();};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :nam(new QNetworkAccessManager(this)),   //必须有,要不执行一次出错QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(push())); //连接信号、槽}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::push()
{qDebug() << "hello world";QUrl url("http://192.168.1.100:8080/myhttp/LoginAction");  //服务器端servelt接收地址QNetworkRequest req;req.setUrl(QUrl(url));req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); //此句交叉编译时必须有,否则报错QByteArray append("username=admin&password=123456");  //定义字符串QNetworkReply *reply = nam->post(req, append);        //以post方式发送数据}

服务器端myeclipse中代码:(注释内容较多,此代码在原来项目中修改,可以忽略)

package guo;
/*服务器端    收发* request  收* response 发* */
import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承HttpServlet,为了生成HttpServletRequest、HttpServletResponse对象
public class LoginAction extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html;charset=utf-8");//设置应答内容,字体编码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//PrintWriter 基于字符的输出流,可以输出字符或字符串整型等数据。输出的目标可以是磁盘文件、其他输出流//从response获得字符流 ,out由web容器创建PrintWriter out = response.getWriter();String username = request.getParameter("username");//获取请求参数String password = request.getParameter("password");//判断用户名密码是否正确/*if(username.equals("admin") && password.equals("123")) {out.print("Login succeeded!");//给输出目标输出字符信息//out.print("用户名"+username);}else {out.print("Login failed!");}*/out.print(username);out.print(password);System.out.println(username);System.out.println(password);out.flush();//清除字符流缓存out.close();//关闭字符流
}}

作者参考博文:

1.http://blog.csdn.net/chenlong12580/article/details/7393563

2.http://blog.csdn.net/ultimater/article/details/8762237

Qt与Tomcat服务器通信实例 post方法提交相关推荐

  1. 部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法

    部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法 参考文章: (1)部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法 (2)https://www. ...

  2. win7 64位系统配置服务器,Tomcat服务器win764位配置方法

    Tomcat服务器win764位配置方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 打开底部的网盘链接,将压缩包解压,如图 打开文件夹,在目录下找到bin文件夹,找到里面的startup.bat.双击 ...

  3. pp助手服务器开小差,无法连接game center服务器通信的处理方法

    无法连接game center服务器通信的处理方法 近日有不少小伙伴咨询这样一个情况,就是在使用时遇到了无法连接gamecenter服务器的问题,无法连接gamecenter服务器虽然不是大问题,但无 ...

  4. eclipse启动tomcat服务器特别慢-解决方法

    eclipse启动tomcat服务器特别慢-解决方法 最近用eclipse启动tomcat服务器特别慢,快则十秒,慢则二十多秒.但单独在tomcat的bin目录下的双击startup.bat启动,启动 ...

  5. qt与JAVA服务器通信_Qt实现的SSL通信客户端和服务器

    [实例简介] Qt实现的SSL通信客户端和服务器 使用QSslSocket实现加密通信 [实例截图] [核心代码] f3a25e44-604e-4435-9e05-3f6efe57c6b0 └── s ...

  6. tomcat 服务器访问日志配置方法

    最近需要配置tomcat访问日志,通过造访他人的博客,再根据apache官方的一些文章,才逐渐清晰了许多 配置方法很简单: 在server.xml里的<host>标签下加上 <Val ...

  7. WEB的发展历程、Tomcat服务器、与HTTP协议

    1 web的发展历程 C/S和B/S都是软件架构的两种不同的表现形式: C/S架构:Client/Server:客户端和服务端的架构.该软件运行在电脑桌面:比如,QQ,FeiQ,POS机/火车站买票. ...

  8. java能否访问PHP的服务器,PHP与Java进行通信的实现方法

    缘起: 最近做了一个电商平台与网银整合的小东西,程序是开源的 Ecmall的,网银的接口也很规范,给出的文档很全,唯一的小问题是,网银使用的签名和验签的lib是只有java和c的,对java还熟悉一些 ...

  9. qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include #include #include # ...

最新文章

  1. layui使用方法——图标
  2. LMS学习函数MATLAB代码
  3. boost::mp11::mp_set_contains相关用法的测试程序
  4. 纪中A组模拟赛总结(2021.7.22)
  5. 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点
  6. set集合判断集合中是否有无元素_一文了解 JavaScript 中的 Set(集合)- 对 Set 的扩展...
  7. C语言的数组基础,C语言基础-数组
  8. poj1949Chores(建图或者dp)
  9. 推荐一款优雅的日历控件
  10. oracle视图无法使用rowid,请问:无法从没有键值保存表的连接视图中选择 ROWID 这个是什么原因啊?...
  11. flash制作文字笔顺_教你如何给GIF动态图片加上文字
  12. Wifi密码破解之二:利用wps漏洞穷举PIN码破解wifi密码
  13. java实现咖啡店模拟_装饰者模式学习:模拟咖啡馆的点单系统来剖析装饰者模式的使用 + 装饰者模式在java I/O 中的应用...
  14. elasticsearch两年学习资料整理分享
  15. (68)-- 爬取糗百信息
  16. win10资源管理器explorer总是崩溃重启
  17. 前端关于Base64编码的一些技术分析
  18. 【python】python制作 连连看 游戏脚本(一)
  19. 赛维安讯LiveCloud直播云服务介绍
  20. 超融合云数据中心,泽塔云为北京城市副中心建设添砖加瓦

热门文章

  1. sql常用crud命令
  2. ora-04021 无法锁表的解决办法
  3. 版本控制工具Git 常用操作命令
  4. [Dubbo实战]dubbo + zookeeper + spring 实战 (转)
  5. AngularJS学习笔记
  6. matplotlib,numpy自己动手安装
  7. Win7下VS2008升级补丁
  8. Unity TIP3: 注入现有对象
  9. 防止过拟合,采用的手段有哪些?
  10. Web 趋势榜:上周最有意思又热门的 10 大 Web 项目 - 210709