C Programer  - 讨论区

标题:使用libcurl开发http客户端程序

2014年01月26日 星期日 09:06

http协议是现代互联网中最为重要的通讯协议之一,其古老而又与时俱进。如今各大网络服务的开放平台均提供基于http协议的API,我们如果要使用这些API,那么一个可靠好用的http client library是不可或缺的。

libcurl是一组历史悠久,稳定可靠、多协议、跨平台、开源免费的开发库,可以很方便的开发http客户端程序。

libcurl官方网站无不自豪的说:

libcurl is most probably the most portable, most powerful and most often used C-based multi-platform file transfer library on this planet - be it open source or commercial.

简单的示例代码如下:

 

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

int main(int argc,char **argv) {
    CURL *curl;
    CURLcode result;
    curl=curl_easy_init();
    if(!curl) {
        return -1;
    }
    char *url;
    if(argc > 1) {
        url=argv[1];
    } else {
        url="http://apr.apache.org/docs/apr/1.3/modules.html";
    }
    curl_easy_setopt(curl,CURLOPT_URL,url);

    FILE *fp=fopen("result.htm","w+");
    if(!fp) {
        perror("fopen");
        return -2;
    }
    curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
    curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
    
    result=curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    fclose(fp);

    return 0;
}

Makefile示例如下:

CURL_FLAGS = `pkg-config --cflags --libs libcurl` 
all: curl_easy
curl_easy: curl_easy.c 
	gcc -std=c99 -o curl_easy ${CURL_FLAGS} curl_easy.c
clean:
	rm -f curl_easy *.o 

参考资料:

http://curl.haxx.se/libcurl/

http://curl.haxx.se/libcurl/c/libcurl-easy.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号