QT 客戶機上https get請求JSON解析無數據

項目中使用https抓天氣數據,在測試環境使用正常,客戶機部分電腦無法使用,部分電腦正常。

開始以爲JSON解析出錯,於是:

QJsonParseError err; //判斷是否爲cjson數據

WriteFile( err.errorString(),"C:/error.txt");

在客戶機上運行後返回:illegal value

根據錯誤回去檢查JSON數據

QJsonDocument doc = QJsonDocument::fromJson(buf.toUtf8(),&err);
    
WriteFile( QString(doc.toJson()),"C:/error.txt");

驚訝的發現數據爲空,抱着懷疑去查看了 QNetworkReply 的回覆值

QString buf = reply->readAll(); //cJSON數據放入緩衝區,定義爲字符串

WriteFile( buf,"C:/error.txt");

WriteFile( reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).value<QString>(),"C:/error.txt");

果然發現應答爲空,立即打印錯誤信息

WriteFile( reply->errorString(),"C:/error.txt");

提示 error creating ssl context()

考慮到在測試環境使用正常,客戶機部分電腦無法使用,部分電腦正常等原因,可能是windows系統缺少openssl的原因,後在項目中增加了判斷,內容如下:

if (!QSslSocket::supportsSsl()) {
	QMessageBox::information(NULL, "warning", "notSupportsSsl", QMessageBox::Yes);
}

經在客戶環境下測試確認了是這個原因。就去下載了OpenSSL並安裝到系統中,軟件可以正常使用。

Win32/Win64 OpenSSL Screenshot下載地址
在安裝時需要注意要複製到windows system directory,其他安裝選擇默認即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章