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. WebService 初步入门的理解

    先说明 我不是高手 我是菜鸟  也在不断学习的过程  记录下来这些是让自己总结的学习  毕竟我做的时候也是摸索前进的 我没有深入 我是入门摸索 前两天的时候做一个微信的开发的 要用到我们公司微信服务号 ...

  2. Nginx配置IPv6端口监听及务器设置IPV6及Https支持并通过AppStore审核

    一.监听端口 从Nginx 1.3的某个版本起,默认ipv6only是打开的,所以,我们只需要在监听中加入ipv6监听即可,不过推荐都手动加上比较好,代码如下: listen [::]: ipv6on ...

  3. 重新学习之spring第二个程序,配置AOP面向切面编程

    第一步:在配置好的ioc容器的基础上,导入面向切面编程所需要的jar包 (本案例用的是spring3.2.4,由于spring3.2.4的官网jar包中不再有依赖包,所以依赖包都是从网上找的) 第二步 ...

  4. cratedb geo 查询

    cratedb支持的geo 查询还相对比较全,开发基本的功能已经够用了 安装cratedb 使用docker docker run -d -p 4200:4200 crate 创建数据库 创建表 CR ...

  5. Packer 基本试用

    安装 使用mac 系统 https://www.packer.io/downloads.html 配置环境变量 可选 sudo nano ~/.bash_profile export PATH=$PA ...

  6. cocos2dx 分辨率适配问题

    分辨率适配问题好文章: http://www.cocoachina.com/bbs/read.php?tid=201987&page=1&toread=1#tpc http://www ...

  7. Jquery中的has、find、filter方法区别

    find方法 find返回的是匹配结果集,作用于后代$(‘li’).find(‘.a’).css(‘background-color’, ‘red’);在li下面查找元素是否有class=a的元素,返 ...

  8. Mac 下使用brew install 报错: Cowardly refusing to `sudo brew install'

    Mac 下使用brew install 报错: localhost:infer-osx-v0.6.0 admin$ sudo brew install opam Error: Cowardly ref ...

  9. 修改numa和io调度优化mysql性能

    一.NUMA设置单机单实例,建议关闭NUMA,关闭的方法有三种:1.硬件层,在BIOS中设置关闭:2.OS内核,启动时设置numa=off:3.可以用numactl命令将内存分配策略修改为interl ...

  10. linux 使用中括号进行条件判断

       格式 “#”代表空格,不可缺少 [# param1#op# param2 #] 这种带比较操作符的形式,op左右必须使用空格隔开. 如 [# “3”==”2” #]  这种缺少空格的写法会得到结 ...