なにをしたか
以前書いた,
を組み合わせて,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 件のコメント:
コメントを投稿