我是靠谱客的博主 健康小海豚,最近开发中收集的这篇文章主要介绍libcurl库的http get和http post使用
一、libcurl中的http get使用方法
,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、libcurl中的http get使用方法
1. 为什么要使用libcurl
1) 作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要分析协议头,实现代理…这样太麻烦了。
2) libcurl是一个开源的客户端url传输库,支持 FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,支持 Windows,Unix,Linux等平台,简单易用,且库文件占用空间不到200K
2. get和post方式
客户端在http连接时向服务提交数据的方式分为get和post两种
3.Get方式将所要传输的数据附在网址后面,然后一起送达服务器,它的优点是效率比较高;缺点是安全性差、数据不超过1024个字符、必须是7位的ASCII编码;查询时经常用此方法
4.Post通过Http post处理发送数据,它的优点是安全性较强、支持数据量大、支持字符多;缺点是效率相对低;编辑修改时多使用此方法
5.Get使用实例,其关键点就是设置回调函数
- <pre code_snippet_id="172026" snippet_file_name="blog_20140126_1_7646331" name="code" class="html"></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "curl/curl.h"
- #define HEAD_OUT "/root/project/test/head.out"
- #define BODY_OUT "/root/project/test/body.out"
- #define RET_EQUAL 0
- #define RET_NOT_EQUAL 1
- #define RET_NO_UPGRADE_FILE 2
- #define RET_FIND_UPGRADE_FILE 3
- #define RET_CHECK_OK 4
- #define RET_ERROR 5
- #define RET_SD_VERSION_ERROR 6
- #define RET_OK 7
- #define RET_CUR_VERSION_ERROR 8
- #define RET_XOR_ERROR 9
- #define RET_UPGRADE_OK 10
- #define RET_UPGRADE_ERROR 11
- #define RET_ERROR_FILE_NAME 12
- #define RET_DELAY_CMD_NOT_RUN 13
- #define RET_DEALY_CMD_ERROR 14
- #define RET_GET_HASH_OK 15
- #define RET_GET_HASH_ERROR 16
- #define RET_AREADY_CP_VERSION 17
- #define RET_NOT_CP_VERSION 18
- #define RET_XOR_VERSION 19
- #define RET_OPEN_VERSION_LIST_PATH_FAIL 20
- #define OPEN_HEAD_FILE_ERROR 21
- #define OPEN_BODY_FILE_ERROR 22
- #define RET_GET_VERSION_PATH 23
- #define RET_NOT_GET_VERSION_PATH 24
- #define TIME_OUT 25
- #define DOWNLOAD_OK 26
- #define LOG fprintf
- #define LOG_NOTICE stderr
- size_t write_data(void * ptr, size_t size, size_t nmemb, void* stream)
- {
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
- return written;
- }
- int detect_version(char * url)
- {
-
- CURL * curl_handle;
-
- FILE * headerfile;
-
- FILE * bodyfile;
-
- static const char * headerfilename = HEAD_OUT;
-
- static const char * bodyfilename = BODY_OUT;
-
- // char buffer[STR_LEN] = {'
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "curl/curl.h"
- #define HEAD_OUT "/root/project/test/head.out"
- #define BODY_OUT "/root/project/test/body.out"
- #define RET_EQUAL 0
- #define RET_NOT_EQUAL 1
- #define RET_NO_UPGRADE_FILE 2
- #define RET_FIND_UPGRADE_FILE 3
- #define RET_CHECK_OK 4
- #define RET_ERROR 5
- #define RET_SD_VERSION_ERROR 6
- #define RET_OK 7
- #define RET_CUR_VERSION_ERROR 8
- #define RET_XOR_ERROR 9
- #define RET_UPGRADE_OK 10
- #define RET_UPGRADE_ERROR 11
- #define RET_ERROR_FILE_NAME 12
- #define RET_DELAY_CMD_NOT_RUN 13
- #define RET_DEALY_CMD_ERROR 14
- #define RET_GET_HASH_OK 15
- #define RET_GET_HASH_ERROR 16
- #define RET_AREADY_CP_VERSION 17
- #define RET_NOT_CP_VERSION 18
- #define RET_XOR_VERSION 19
- #define RET_OPEN_VERSION_LIST_PATH_FAIL 20
- #define OPEN_HEAD_FILE_ERROR 21
- #define OPEN_BODY_FILE_ERROR 22
- #define RET_GET_VERSION_PATH 23
- #define RET_NOT_GET_VERSION_PATH 24
- #define TIME_OUT 25
- #define DOWNLOAD_OK 26
- #define LOG fprintf
- #define LOG_NOTICE stderr
- size_t write_data(void * ptr, size_t size, size_t nmemb, void* stream)
- {
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
- return written;
- }
- int detect_version(char * url)
- {
- CURL * curl_handle;
- FILE * headerfile;
- FILE * bodyfile;
- static const char * headerfilename = HEAD_OUT;
- static const char * bodyfilename = BODY_OUT;
- // char buffer[STR_LEN] = {'