SSブログ

MFCでHTTPS通信 [プログラミング]

今度は、MFCを使ってHTTPS通信してみます。

とはいえ、CInternetSessionクラスのOpenURL()メソッドを使うのなら、HTTPでもHTTPSでも全く同じです。

const CString urlStr = _T("https://~~");
try {
    CInternetSession session;

    std::auto_ptr<CStdioFile> file(session.OpenURL(urlStr);
    if (file.get() == NULL)
        return;    // 失敗

    CString str;
    while (file->ReadString(str)) {
        // @@@ 取得したデータを、どうにかする @@@
    }

    file->Close();

} catch (CInternetException* e) {
    e->Delete();
}

GetHttpConnection()メソッドを使う方法だと、いくつか設定が必要になります。

const CString host = _T("~~~");  // ホスト
const CString path = _T("~~~");  // パス

try {
    CInternetSession session;

    const DWORD flag = INTERNET_FLAG_SECURE;
    std::auto_ptr<CHttpConnection> conn(session.GetHttpConnection(host, flag));
    std::auto_ptr<CHttpFile< file(conn->OpenRequest(CHttpConnection::HTTP_VERB_GET, path,
                                                    NULL, 1, NULL, NULL, INTERNET_FLAG_SECURE));

    if (!file->SendRequest())
        return;    // 失敗
    
    CString str;
    while (file->ReadString(str)) {
        // @@@ 取得したデータを、どうにかする @@@
    }

    file->Close();
    conn->Close();

} catch (CInternetException* e) {
    e->Delete();
}

GetHttpConnection()OpenRequest()にフラグINTERNET_FLAG_SECUREを追加しています。
それだけです。

正式じゃない証明書(俗に言う「オレオレ証明書」)を使っているサイトと通信する場合は、フラグにINTERNET_FLAG_IGNORE_CERT_CN_INVALIDとかも追加しないといけないみたいですが。

[船] 今日の二冊
指し手の顔 上―脳男2 (1)

指し手の顔 上

  • 作者: 首藤 瓜於
  • 出版社/メーカー: 講談社
  • 発売日: 2007/12
  • メディア: 単行本

タグ:VisualC++
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。