libcurl用法
本文以向百度搜索开放平台搜索关键字所对应的推荐搜索条目为例子:
url:http://m.baidu.com/su?wd=%s&action=opensearch&ie=utf-8
(%s带上所要搜索的关键字)
reponse:返回推荐搜索条目的JSON格式数据
【举例】
url:http://m.baidu.com/su?wd=iphone&action=opensearch&ie=utf-8
response:["iphone",["iphone6","iphone6plus","iphone5s","iphone6s","iphone5","iphone4s","iphone7","iphone5c","iphone4","iphone6 plus"]]
#define URL_TEMPLATE_SQ "http://m.baidu.com/su?wd=%s&action=opensearch&ie=utf-8" char *keyword = ***;//iphone curl_global_init(CURL_GLOBAL_ALL); CURL *curl;
CURLcode curl_code; curl = curl_easy_init(); if (!curl)
{
PERR("Failed to initial CURL connection\n");
curl_global_cleanup();
return ERR_CODE;
} char content[URL_SIZE];
memset(content, 0x00, sizeof(content));
sprintf(content, URL_TEMPLATE_SQ, keyword); curl_easy_setopt(curl, CURLOPT_HTTPGET, );//get方式
curl_easy_setopt(curl, CURLOPT_URL, content);//填入url
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _write_data);//server发回response的时候的回调函数
curl_easy_setopt(curl, CURLOPT_TIMEOUT, );
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT , );
curl_easy_setopt(curl, CURLOPT_WRITEDATA , keyword);//带入的用户数据,在回调函数中送回,即*user_p curl_code = curl_easy_perform(curl); if(curl_code != CURLE_OK)
{
PLOG("error curl_code is %d", curl_code);
ret = ERR_CODE;
goto EXIT;
} EXIT:
curl_easy_cleanup(curl);
curl_global_cleanup();
回调函数如下:
static size_t _write_data(void *ptr, size_t size, size_t nmemb, void *user_p)
{
long total_size = size * nmemb;
LOG("get %d bytes from server", total_size);
char *response_data = NULL; if(ptr == NULL)
{
PERR("ptr is NULL");
return -;
}else
{
response_data = (char *)ptr;
LOG("[data] %s", response_data);
} char *keyword = (char *)user_p;//用户数据,即“iphone” //TODO 用户做一些事情,比如用libjson来解析成字符串数组然后填满列表 return total_size;
}
libcurl用法的更多相关文章
- (转) c/c++调用libcurl库发送http请求的两种基本用法
libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数 ...
- 从curl命令获取libcurl的用法
libcurl的用法参数太多 有时候弄不好 可以先用curl命令实现了 然后获取相应的libcurl代码 比如要上传文件 curl -T d:/h.txt http://demo.xudp.cn/up ...
- c语言libcurl库的异步用法
multi接口的使用会比easy 接口稍微复杂点,毕竟multi接口是依赖easy接口的,首先粗略的讲下其使用流程:curl_multi _init初始化一个multi curl对象,为了同时进行多个 ...
- libcurl API:CURLOPT_REFERER的用法
1.当你用libcurlAPI来请求某些数据时,发现返回的数据是0,这时候你就要去尝试用CURLOPT_REFERER来伪造一个来路页面:具体设置什么值可以通过浏览器来获取:按f12,在network ...
- libcurl安装使用方法-简单实用(摘录)
http://curl.haxx.se/libcurl/c/example.html 官网c例子http://curl.haxx.se/download/curl-7.21.3.tar.gz 下载地址 ...
- linux curl用法详解
linux curl用法详解 curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...
- libcurl编程学习
一.curl简介 curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持的协议有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...
- saltstack:使用教程之二高级模块用法Grains、Pillar
1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...
- Ubuntu命令用法详解——curl命令
简介: cURL(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工 ...
随机推荐
- HihoCoder 1097 kruscal
最小生成树二·Kruscal算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了——但是幸运的 ...
- 在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解决,谢谢!
在TreeView 控件上,如果双击任何一个节点的checkbox 只会收到一次After_Check事件 但是check属性变化两次(从false到true 再从true到false),请问该如何解 ...
- windows下安装storm1.1.0并启动
64位windows安装storm前需要先搞定zookeeper和python,所以下面我们3步走: 一.zookeeper 1.上https://zookeeper.apache.org/点击下方d ...
- GOF23设计模式之单例模式(singleton)
一.单例模式概述 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点. 由于单例模式只生成一个实例,减少了系统性能开销.所以当一个对象的产生需要比较多的资源时,如读取配置.产生其他依赖对象时, ...
- MyBatis collection的两种形式——MyBatis学习笔记之九
与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射 ...
- explain解析
MySQL执行计划调用方式执行计划包含的信息执行计划显示内容解读MySQL执行计划的局限MySQL5.6支持OPTIMIZER_TRACE 1.什么是归并排序?将已有序的子序列合并,得到完全有序的序列 ...
- MFC学习(三)程序入口和执行流程
1) WIN32 API程序当中,程序入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用程序窗口函数.而在MFC程序当中我们 ...
- 为何指针初始化为NULL
指针初始化为NULL,指向NULL指针区(大小64K),如果读取或写入这个地址,会引发内存写保护异常 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Centos 6.* / 7.*下通过yum安装php7
查看 centos 版本 # cat /etc/centos-release 删除之前的 php 版本 # yum remove php* php-common rpm 安装 Php7 相应的 yum ...
- Bokeh绘图
http://bokeh.pydata.org/en/latest Bokeh 是一个专门针对Web浏览器的呈现功能的交互式可视化Python库.这是Bokeh与其它可视化库最核心的区别. 专门针对 ...