链接槽函数
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");