QByteArray post_data;
QString strCompte("login=myname&");
post_data.append(strCompte);
post_data.append("key=secret&");
post_data.append("source=windows");
network_manager = new QNetworkAccessManager();
QNetworkRequest network_request;
network_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
network_request.setHeader(QNetworkRequest::ContentLengthHeader, post_data.length());
network_request.setUrl(QUrl("https://www.companyxxxx.com/api_check_server.php"));
connect(network_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ReadXML(QNetworkReply*))); // 绑定ReadXML函数
就这段话,在公司里3台win7机子上执行成功,2台win7机子上失败,2台winxp上全失败,这是为啥?但是采用同样的网址,但使用http方式发送始终成功。
PS,exe文件同一目录下,已经放置了libeay32.dll和ssleay32.dll,且别的功能可以正常使用。
失败的表现是status_code的值始终是0,也不会进入NoError的区块执行:
void LoginDialog::ReadXML(QNetworkReply *reply)
{
QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
if(reply->error() == QNetworkReply::NoError) {
// 执行内容省略
}
}
开发环境是WIN7 64bit,VS2008+QT4.86