QT实现https用post发送表单数据

链接槽函数

    QNetworkAccessManager *m_manager;

	m_manager = new QNetworkAccessManager(this);
	connect(m_manager_, SIGNAL(finished(QNetworkReply*)), this, SLOT(postFinished(QNetworkReply *)));

post实现


void Dialog::post() 
{   
    //网址
	QUrl qrcodeurl_;

	QNetworkRequest request;
	request.setUrl(qrcodeurl_);
    QSslConfiguration config =  QSslConfiguration::defaultConfiguration();
    
    //这段必加,不然无法识别是https
    config.setProtocol(QSsl::TlsV1_2);
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    request.setSslConfiguration(config);

    //添加请求头
	request.setRawHeader(QByteArray("xx-xx"), QByteArray("xxxxxxxxxxx"));
	
    QHttpMultiPart *multi_part = new QHttpMultiPart(QHttpMultiPart::FormDataType);
		
    //设置要传输的表单数据
	QHttpPart data_part1;
    data_part1.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
    data_part1.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"id\""));
    data_part1.setBody("xxxxx");

	QHttpPart data_part2;
    data_part2.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
    data_part2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"name\""));
    data_part2.setBody("xxxxxx");

    multi_part->append(data_part1);
    multi_part->append(data_part2);

	m_manager->post(request,multi_part);  
}

接收到的数据处理


void Dialog::postFinished(QNetworkReply* reply)
{
    //获取到的文件名
	QString name = QString(reply->rawHeader("Content-Disposition"));

	QByteArray data = reply->readAll();
	
    //解析json数据
	int CodeRes = 0 ;
	QJsonParseError jsonError;
	QJsonDocument jsonDocument = QJsonDocument::fromJson(data, &jsonError);
	if(jsonError.error == QJsonParseError::NoError)
	{
		if(jsonDocument.isObject())
		{
			QJsonObject object_ = jsonDocument.object();
			if(object_.contains("code"))
			{
				QJsonValue value = object_.take("code");
				CodeRes = value.toString().toInt();
			}
		}
	}

}

假如我接受到的是图片文件,我就可以直接保存


 QImage image;
//data:接收到的文件数据
 image.loadFromData(data);
 image.save("xxxxxxxxx.png");

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值