レポートページからデータを取得してローカルに保存する必要がある場合があります。 通常のページには問題はありませんでしたが、ローカルプロバイダーから口座残高を取得したかったため、このページへのアクセスはhttpsのみでした。
これを行うには、libcurlライブラリ(http://curl.haxx.se/libcurl/)を使用する必要がありました。
どういうわけか私はそれなしで行うことができました。 8)
ここに私が得たものの例があります
/*
* cURL HTTPS
*/
#include <iostream>
#include <string>
#include <curl/curl.h>
// , cURL
std :: string curlBuffer ;
size_t curlWriteFunc ( char * data, size_t size, size_t nmemb, std :: string * buffer )
{
size_t result = 0 ;
if ( buffer ! = NULL )
{
buffer - > append ( data, size * nmemb ) ;
result = size * nmemb ;
}
return result ;
}
//
//
//
int main ( int argc, char * argv [ ] )
{
// ( login screen)
const char * url = "_/cgi-bin/utm5/aaa5" ;
//
const char * urlPOST = "login=&password=&cmd=login" ;
//
char curlErrorBuffer [ CURL_ERROR_SIZE ] ;
CURL * curl = curl_easy_init ( ) ;
if ( curl ) {
//
curl_easy_setopt ( curl, CURLOPT_ERRORBUFFER, curlErrorBuffer ) ;
// URL...
curl_easy_setopt ( curl, CURLOPT_URL, url ) ;
// "Location:" HTTP
curl_easy_setopt ( curl, CURLOPT_FOLLOWLOCATION, 1 ) ;
//
curl_easy_setopt ( curl, CURLOPT_SSL_VERIFYPEER, O ) ;
// POST
curl_easy_setopt ( curl, CURLOPT_POST, 1 ) ;
// POST
curl_easy_setopt ( curl, CURLOPT_POSTFIELDS, urlPOST ) ;
// , cURL
curl_easy_setopt ( curl, CURLOPT_WRITEDATA, & curlBuffer ) ;
curl_easy_setopt ( curl, CURLOPT_WRITEFUNCTION, curlWriteFunc ) ;
//
CURLcode curlResult = curl_easy_perform ( curl ) ;
//
curl_easy_cleanup ( curl ) ;
if ( curlResult == CURLE_OK )
{
std :: cout << curlBuffer << std :: endl ;
return ( 0 ) ;
} else {
std :: cout << "(" << curlResult << "): " << curlErrorBuffer << std :: endl ;
return ( - 1 ) ;
}
}
return 0 ;
}
これが、このライブラリを知っている私のやり方です。
mmm ...おそらく、証明書の自動受信とインストールを行う必要がありますが、それを行う価値はあるのでしょうか。 8)
C ++のラッパーをダウンロードしている間は良い
______________________
テキストは、©SoftCoder.ruのHabr Editorで作成されます。