なにをしたか
以前書いた,
を組み合わせて,Gmailの未読メール数をSPI LED Moduleに表示した.どこに新しい(自分にとっての)技術勉強の要素があったかというと,C言語からGmailの未読メール数を取得することだった.実現にはlibcurlを使っている.
ためしに,https://mail.google.com/mail/feed/atom にブラウザからアクセスすると,未読メールの一覧が表示される.このページをC言語で読み込み,文字列処理をすることによって未読メール数を取得する.といっても処理自体はかんたんで,未読メール数は<fullcount> </fullcount>というタグに囲まれているので,その部分を抜き出してやればよかった.
VisualStudio C++ 2012 でlibcurlを使う
この通りにやればいい.簡単に説明すると,
- http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc からZipファイルをダウンロードし,好きなところに解凍する
- VisualStudioでプロジェクトを開き,解凍したlibcurlのIncludeディレクトリ,Libraryディレクトリを設定する.
- リンカー > 入力 > 追加の依存ファイルにcurllib.libを追記
- curllib.dll, libeay32.dll, openldap.dll, and ssleay32.dllをプロジェクトの適切なディレクトリに入れる
HTMLを取得して表示するプログラムは以下のようになる.
#include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.co.jp/"); res = curl_easy_perform(curl); /* Check for errors */ if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); /* always cleanup */ curl_easy_cleanup(curl); } system("PAUSE"); return 0; }
このようにcurl_easy_performを使うと,printf等を使わなくても標準出力に表示されるが,結果を利用してなにかしたいときには,char型配列に保存しなければいけない.その部分は,
を参考にさせていただきました.結果,無事char型配列に保存することが出来ました.
今日はここまで.
次回は文字列処理をして未読メール数を取得するところまでを書きます.
0 件のコメント:
コメントを投稿