标题:https post为什么失败?
作者:stlcours
日期:2014-10-31 21:33
内容:
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
#1 [begboy 11-01 23:28]
stlcours,你好!
根据我们以前在服务器端和客户端两端开发项目的情况来看,建议
先行检查安装机器是32位还是64位,另外我们一般会搭建三个环境:
1、64位服务器开发环境用于64位服务器端服务程序;
2、32位客户端开发环境用于32位客户端程序;
3.64位客户端开发环境用于64位客户端程序。
这样出问题的很少发生,供参考。
祝好运!
begboy
#2 [liulin188 11-02 11:32]
不用扯那么远,楼主的问题就是openssl库的问题
#3 回 begboy 的帖子 [stlcours 11-03 17:53]
begboy:stlcours,你好!
根据我们以前在服务器端和客户端两端开发项目的情况来看,建议
先行检查安装机器是32位还是64位,另外我们一般会搭建三个环境:
1、64位服务器开发环境用于64位服务器端服务程序;
2、32位客户端开发环境用于32位客户端程序;
....... (2014-11-01 23:28)
谢谢侠客.不过同一套代码,我把它放到XP下编译,编译没问题,运行结果是一样的。所以我仍然估计是OPENSSL的问题。我再想想办法吧。
#4 [foxgod 05-27 16:43]
你的请求里面有带request rayload 参数吗,如果有,是什么带的
#5 回 foxgod 的帖子 [stlcours 05-27 22:24]
foxgod:你的请求里面有带request rayload 参数吗,如果有,是什么带的 (2016-05-27 16:43)
没有。我那个问题就是openssl的问题。