qt使用Http请求
正常的使用post、get
get把参数带到地址
post把参数放到json包
有一些不常用的webservice
传一些值
例如在postman这样调用
那么在qt中如何调用
1.在qt中加入qtsoap这个子项目
QtSoapMessage message;
// 设置方法
message.setMethod("qqCheckOnline", "http://WebXml.com.cn/");
// 设置动作
m_pHttp->setAction("http://WebXml.com.cn/qqCheckOnline");
// 设置主机
m_pHttp->setHost("www.webxml.com.cn");
// 添加方法参数
QString strQQ = "1161913065";
message.addMethodArgument("qqCode", "", strQQ);
QString strXML = message.toXmlString();
qDebug() << strXML;
qDebug() << "------------------------------------------------";
// 提交请求
m_pHttp->submitRequest(message, "/webservices/qqOnlineWebService.asmx");
QNetworkAccessManager *manager = new QNetworkAccessManager();
QString strUserInfo = QString("qqCode=1806903829");
QByteArray content = strUserInfo.toUtf8();
int contentLength = content.length();
QNetworkRequest netReq;
netReq.setUrl(
QUrl("http://ws.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline")
);
netReq.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
netReq.setHeader(QNetworkRequest::ContentLengthHeader, contentLength);
// 发送参数
QNetworkReply *reply =manager->post(netReq, content);
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug() << "statusCode:" << statusCode;
QEventLoop eventLoop;
QAbstractSocket::connect(manager,SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
eventLoop.exec();
QString bytes =reply->readAll();
qDebug()<< bytes;
reply->deleteLater();