にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

よさげなHTTPライブラリ - libcurl

諸事情によりHTTPのフリーなライブラリを探していて見つけたので使ってみる。

インストール

まず、ここからcurl-7.18.1.tar.gzをダウンロード。
展開してできたディレクトリの中に移動したあと、configureする。
HTTP(S)だけ使用できればよいので、以下のようにオプションをつけて実行。

$ ./configure --enable-http --enable-ipv6 --enable-nonblocking --enable-thread \
    --enable-cookie --enable-crypto-auth \
    --disable-ftp --disable-ldap --disable-ldaps --disable-dict \
    --disable-telnet --disable-manual --disable-ares --disable-sspi \
    --disable-debug --disable-hidden-symbols \
    --with-ssl

その後、

$ make
$ sudo make install

で完了。

サンプル

libcurl - source code examplesより拾ってきたものにちょっとだけ手を加えて実行してみる。

#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

#define URL_MAX 256

int main(int argc, char *args[])
{
    CURL *curl;
    CURLcode res;
    char url[URL_MAX+1];

    if (argc != 2) {
        printf("usage: ./curltest [url]\n");
        return -1;
    }

    strncpy(url, args[1], URL_MAX);

    curl = curl_easy_init();
    if(!curl) {
        printf("init failed!\n");
        return -1;
    }

    curl_easy_setopt(curl, CURLOPT_URL, url);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);

    res = curl_easy_perform(curl);

    printf("res = %d\n", res);
    curl_easy_cleanup(curl);

    return 0;
}

で、以下でコンパイル&実行。

$ gcc -Wall curltest.c -o curltest -lcurl
$ ./curltest https://sourceforge.net/

いきなり受信したHTMLがどばっと出てびっくり。出力を抑制する方法も探さないと。