C
C++

OS X 上で libcurl を使って HTTP 通信

More than 5 years have passed since last update.

C, C++ がほとんどわからないのですが・・・。

  1. まずプロジェクトを作ります。Xcode で News -> Project -> OS X -> Command Line Tool -> C++
  2. Project -> Build Phases -> Link Binary With Libraries で libcurl.dylib を追加。

curl_easy_perform() で取得したページの内容は、CURLOPT_WRITEFUNCTION で指定したコールバックで処理できるようです。

main.cpp
#include <iostream>
#include <curl/curl.h>

size_t onReceive(char *ptr, size_t size, size_t nmemb, void *userdata)
{
    char result[nmemb];
    memcpy(result, ptr, size * nmemb);
    std::cout << result << std::endl;
    return size * nmemb;
}

int main(int argc, const char * argv[])
{
    CURL *curl = curl_easy_init();
    if (!curl) {
        std::cerr << "Failed to init curl." << std::endl;
        curl_easy_cleanup(curl);
        return 1;
    }
    curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, onReceive);
    CURLcode res = curl_easy_perform(curl);

    if (res != CURLE_OK) {
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        curl_easy_cleanup(curl);
        return 1;
    }

    curl_easy_cleanup(curl);    
    return 0;
}

参考
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html