qt发送https请,状态码为0。
编程小鱼酱 C++领域优质作者 博客专家认证 2017-05-23 03:36:23 QNetworkRequest netRequest;
netRequest.setRawHeader("Accept", "*/*");
netRequest.setRawHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
netRequest.setRawHeader("Accept-Encoding", "gzip, deflate, br");
netRequest.setRawHeader("Referer", "https://wx.qq.com/");
netRequest.setRawHeader("Accept-Charset", "utf-8;q=0.7,*;q=0.7");
netRequest.setRawHeader("Connection", "keep-alive");
QString codeLogin = RequestFun::Instance().uriConnect();
netRequest.setUrl(QUrl(codeLogin)); //地址信息
if(strUrl.toLower().startsWith("https"))//https请求,需ssl支持(下载openssl拷贝libeay32.dll和ssleay32.dll文件至Qt bin目录或程序运行目录)
{
QSslConfiguration sslConfig;
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConfig.setProtocol(QSsl::TlsV1SslV3);
netRequest.setSslConfiguration(sslConfig);
}
m_pNetworkReply = m_pNetworkManager->get(netRequest); //发起get请求
connect(m_pNetworkReply,SIGNAL(finished()),this,SLOT(slot_requestFinished())); //请求完成信号
m_pTimer->start(nHTTP_TIME);
void HttpFun::slot_requestFinished()
{
m_pTimer->stop();//关闭定时器
QByteArray resultContent = m_pNetworkReply->readAll();
QTextCodec* pCodec = QTextCodec::codecForName("UTF-8");
QString strResult = pCodec->toUnicode(resultContent);
int nHttpCode = m_pNetworkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();//http返回码
if(nHttpCode == 200)//成功
{
emit signal_requestFinished(true,strResult);//请求成功
}
else
{
emit signal_requestFinished(false,strResult);//请求失败
}
RequestFun::Instance().SetLoginInfo(strResult.replace(" ", ""));
m_pNetworkReply->deleteLater();
this->deleteLater(); //释放内存
}
nHttpCode 为0,在公司的电脑上是可以 返回200的,在家里电脑就是返回为0 ,
不知道原因是什么。