以前作成した MFC によるアップロード の https 対応.
前回コードを書いた頃は https の環境が用意できなかったのでそのままと(http に)なっていた.
次の関数を呼び出して接続しているが,それぞれ引数が異なるものが用意されている.
CInternetSession::GetHttpConnection
CHttpConnection::OpenRequest
それらの引数に dwFlags があり,INTERNET_FLAG_SECURE が指定できる.
最初,両方の呼び出しに指定してみたが,CInternetSession::GetHttpConnection は指定しなくても通った.
CInternetSession session(userAgent.c_str()) ; CHttpConnection* pServer = NULL ; CHttpFile* pFile = NULL ; { // if (is_ssl) { // pServer = session.GetHttpConnection(serverN.c_str(),INTERNET_FLAG_SECURE,nPort) ; // } // else { pServer = session.GetHttpConnection(serverN.c_str(),nPort) ; // } if (pServer == NULL) { return false ; } } { if (is_ssl) { pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,php,NULL,1,NULL,_T("HTTP/1.1"),INTERNET_FLAG_SECURE) ; } else { pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,php) ; } if (pFile == NULL) { return false ; } // ... }
参考にさせてもらったのは次の所.
How to send HTTPS request using WinInet?
WinInet(MFC)を使ったhttpとhttps(自己証明書)
WinInet (MFC) の SSL通信 で 開発中に自己署名証明書を利用する場合のコード