Skip to content

Instantly share code, notes, and snippets.

@varphone
Last active May 11, 2020 22:52
Show Gist options
  • Save varphone/4b528b05ef168923e077e98544d6bb69 to your computer and use it in GitHub Desktop.
Save varphone/4b528b05ef168923e077e98544d6bb69 to your computer and use it in GitHub Desktop.
Qt HTTP Post Example

Qt HTTP Post Example

1. 准备工作

在窗体中添加以下对象

  • 成员变量 QNetworkAccessManager *networkManager
  • 信号槽 void serviceRequestFinished(QNetworkReply*)

在窗体的构造函数中添加初始化代码

	*networkManager = new QNetworkAccessManager(this);
	connect(networkManager, SIGNAL(finished(QNetworkReply*)),
		this, SLOT(serviceRequestFinished(QNetworkReply*)));

2. 发送数据

在需要发送数据的地方添加如下代码

	// JSON 字符串(要发送的数据)
	QString js = "{\"attr\":\"value\"}";
	// 转为 UTF8 字节流
	QByteArray postData = js.toUtf8();
	// 设定请求地址
	QUrl serviceUrl = new QUrl("http://server/service");
	// 创建请求对象
	QNetworkRequest request(serviceUrl);
	// 设置内容类型为 application/json 格式
	request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=utf-8");
	// 发送数据,当发送完成后,会在之前连接的 serviceRequestFinished 信号槽中响应
	networkManager->post(request, postData);

3. 在工程文件 .pro 中添加 network

例如 project.pro

QT += network

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment