struct V3MemoryStruct {
char *memory;
size_t size;
};
static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
size_t realsize = size * nmemb;
struct V3MemoryStruct *mem = (struct V3MemoryStruct *)userp; char *ptr = (char *)realloc(mem->memory, mem->size + realsize + );
if(ptr == NULL) {
/* out of memory! */
printf("not enough memory (realloc returned NULL)\n");
return ;
} mem->memory = ptr;
memcpy(&(mem->memory[mem->size]), contents, realsize);
mem->size += realsize;
mem->memory[mem->size] = ; return realsize;
}
void EW_HandleV3Url(APIV3_REQUEST_TYPE type,char *url,Json::Value &resultjson)
{ struct V3MemoryStruct chunk; chunk.memory = (char *)malloc(sizeof(char)); /* will be grown as needed by the realloc above */
chunk.size = ; /* no data at this point */ //if(type == APIV3_SEARCH_TYPE)
{
curl_global_init(CURL_GLOBAL_ALL); CURL *curl = NULL; curl = curl_easy_init(); if(curl == NULL)
{
printf("curl is NULL.\n");
curl_global_cleanup();
return ;
}
curl_easy_setopt(curl, CURLOPT_URL,url);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER,);//跳过ssl证书 从机
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, );//跳过ssl 证书 主机
curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);//使用IPV4地址
curl_easy_setopt(curl, CURLOPT_VERBOSE, );//将一些请求参数输出到控制台 类似如打印
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,WriteMemoryCallback);//请求 返回的数据回调函数指针
curl_easy_setopt(curl,CURLOPT_WRITEDATA,(void *)&chunk);//请求 返回数据的buffer
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS,);
CURLcode res = CURLE_FAILED_INIT;
res = curl_easy_perform(curl);
if(res != CURLE_OK)
printf("curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
else
printf("%lu bytes retrieved\n",(unsigned long)chunk.size);
if(chunk.size <=)
{
printf("recv data have problem.please check curl flow.\n ");
return;
}
//json parse start
if(type == APIV3_SEARCH_TYPE)
{
//
}
else
{//most popular part
} //json parse end
/* always cleanup */
curl_easy_cleanup(curl);
free(chunk.memory);
curl_global_cleanup();
} }

linux curl网络库的使用方法的更多相关文章

  1. Linux curl 网络访问

    Linux curl 网络访问 参数详解 -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 -anyauth ...

  2. 网络库Alamofire使用方法学习笔记

    Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...

  3. 网络库Alamofire使用方法

    Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...

  4. LINUX curl GET 掉参数解决办法

    LINUX curl GET 掉参数解决方法 url 为 http://mywebsite.com/index.php?a=1&b=2&c=3web形式下访问url地址,使用 $_GE ...

  5. Linux多线程服务端编程:使用muduo C++网络库

    内容推荐本 书主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread.这 ...

  6. 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册

    <Linux多线程服务端编程:使用muduo C++网络库>这本书自今年一月上市以来,半年之内已经重印两次(加上首印,一共是三次印刷),总印数达到了9000册,这在技术书里已经算是相当不错 ...

  7. 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法

    引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...

  8. 《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市

    <Linux 多线程服务端编程:使用 muduo C++ 网络库> 电子版已在京东和亚马逊上市销售. 京东购买地址:http://e.jd.com/30149978.html 亚马逊Kin ...

  9. [原]网络库libevent在Visual Studio中的使用方法

    libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件memcached也 ...

随机推荐

  1. [QT][SQLITE]学习记录二 日期查询

    资料例程: 1.dongfangyu SQL时间段查询 : http://blog.csdn.net/dongfangyu/article/details/4607236 2.痕网 - henw  S ...

  2. jenkins配置email

    # 系统设置 # Jenkins Location # 邮件通知 # 高级 # Failed to send out e-mail 勾选“使用SSL协议” SMTP端口改为465 密码使用授权码,不能 ...

  3. Ext.js 之MVC

    Ext.js 4.0之MVC

  4. 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1

    每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...

  5. [CLPR] 用于加速训练神经网络的二阶方法

    本文翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ...

  6. windows默认文件浏览器大小

    windows打开之后,发现默认窗口很小.

  7. iPhone应用提交流程:如何将App程序发布到App Store

    http://www.techolics.com/apple/20120401_197.html 对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时 ...

  8. android.support.v7.internal.widget.ActionBarOverlayLayout Couldn't Be Initialized

    问题症状: Android Studio 1.2 (Build 141.1890965) 新建工程,自动build完成后,Layout Editor无法预览Layout文件,报错内容: Renderi ...

  9. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #11cpuset

    HACK #11cpuset 本节介绍控制物理CPU分配的cpuset.cpuset是Linux控制组(Cgroup)之一,其功能是指定特定进程或线程所使用的CPU组.另外,除CPU以外,同样还能指定 ...

  10. mysql之SQLYog配置

    SQLyog(MySQL图形化开发工具) 安装: 提供的SQLyog软件为免安装版,可直接使用 使用: 输入用户名.密码,点击连接按钮,进行访问MySQL数据库进行操作