Qt Tech. OpenSSL通信、HTTPS通信を行うプログラムが簡単じゃない!対処方法 新しいページはコチラ
提供: yonewiki
(→本題) |
(→本題) |
||
149行: | 149行: | ||
<syntaxhighlight2 lang="Cpp"> | <syntaxhighlight2 lang="Cpp"> | ||
void CqApp::Init() //CqApp は QObject を継承したQtの機能的クラスの派生クラス(QSystemTrayIcon,QPlainTextEdit,とか | void CqApp::Init() //CqApp は QObject を継承したQtの機能的クラスの派生クラス(QSystemTrayIcon,QPlainTextEdit,とか | ||
− | + | //QNetworkAccessMangeの機能を使う以上は引数thisポインタが必要なので | |
− | + | //QObjectから派生しているクラスである必要がある。 | |
{ | { | ||
//ここでのInitメンバ関数は初期化とかコンストラクタのような処理 | //ここでのInitメンバ関数は初期化とかコンストラクタのような処理 | ||
+ | |||
qNetworkAcessManager_Data = new QNetworkAccessManager(this); | qNetworkAcessManager_Data = new QNetworkAccessManager(this); | ||
− | + | //QNetworkAccessManagerクラスのオブジェクトを生成します。左辺は自分で決めていいです。任意でどうぞ。 | |
− | + | //QNetworkAccessManager* qNetworkAcessManager_Data;のようなメンバ変数としての宣言が事前に必要です。 | |
… | … | ||
161行: | 162行: | ||
this, SLOT(readData(QNetworkReply*))); | this, SLOT(readData(QNetworkReply*))); | ||
− | + | //こんな感じでQt独特のシグナルとスロットという考え方の関数で | |
− | + | //qNetworkAcessManager_Dataのfinishedという通知(引数は内部的にQNetworkRply*型)を受け取ると | |
− | + | //このクラスのreadDataメンバ関数を(内部的にQNetworkRply*型を引数として)呼び出すことを宣言します。 | |
− | + | //イベント駆動のやり方です。 | |
this::request(); | this::request(); | ||
174行: | 175行: | ||
… | … | ||
qNetworkAcessManager_Data->get( QNetworkRequest(QUrl(QStringLiteral("https://xxx.xx/data.xml")))); | qNetworkAcessManager_Data->get( QNetworkRequest(QUrl(QStringLiteral("https://xxx.xx/data.xml")))); | ||
− | + | //メンバ変数を利用してget関数に指定したアドレスの内容を読み込みます。 | |
− | + | //通信が終わったらシグナルスロットの仕組みによりthis::readData関数が呼び出されます。 | |
… | … | ||
} | } | ||
+ | … | ||
void CqApp::readData(QNetworkReply *qNetworkReply_Reply) | void CqApp::readData(QNetworkReply *qNetworkReply_Reply) | ||
{ | { | ||
if(qNetworkReply_Reply->error() != QNetworkReply::NoError) { | if(qNetworkReply_Reply->error() != QNetworkReply::NoError) { | ||
− | + | // SSL通信エラーが発生した時の処理 | |
} | } | ||
else{ | else{ | ||
− | + | // 通信成功時の処理 | |
} | } | ||
… | … |