libcurlを使用してhttpsにアクセスする

レポートページからデータを取得してローカルに保存する必要がある場合があります。 通常のページには問題はありませんでしたが、ローカルプロバイダーから口座残高を取得したかったため、このページへのアクセスは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で作成されます。



All Articles