本文以向百度搜索开放平台搜索关键字所对应的推荐搜索条目为例子:

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用法的更多相关文章

  1. (转) c/c++调用libcurl库发送http请求的两种基本用法

    libcurl主要提供了两种发送http请求的方式,分别是Easy interface方式和multi interface方式,前者是采用阻塞的方式发送单条数据,后者采用组合的方式可以一次性发送多条数 ...

  2. 从curl命令获取libcurl的用法

    libcurl的用法参数太多 有时候弄不好 可以先用curl命令实现了 然后获取相应的libcurl代码 比如要上传文件 curl -T d:/h.txt http://demo.xudp.cn/up ...

  3. c语言libcurl库的异步用法

    multi接口的使用会比easy 接口稍微复杂点,毕竟multi接口是依赖easy接口的,首先粗略的讲下其使用流程:curl_multi _init初始化一个multi curl对象,为了同时进行多个 ...

  4. libcurl API:CURLOPT_REFERER的用法

    1.当你用libcurlAPI来请求某些数据时,发现返回的数据是0,这时候你就要去尝试用CURLOPT_REFERER来伪造一个来路页面:具体设置什么值可以通过浏览器来获取:按f12,在network ...

  5. libcurl安装使用方法-简单实用(摘录)

    http://curl.haxx.se/libcurl/c/example.html 官网c例子http://curl.haxx.se/download/curl-7.21.3.tar.gz 下载地址 ...

  6. linux curl用法详解

    linux ‍‍curl用法详解 ‍‍curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...

  7. libcurl编程学习

    一.curl简介 curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持的协议有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...

  8. saltstack:使用教程之二高级模块用法Grains、Pillar

    1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...

  9. Ubuntu命令用法详解——curl命令

    简介: cURL(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工 ...

随机推荐

  1. vector释放内存之swap方法

    相信大家看到swap这个词都一定不会感到陌生,就是简单的元素交换.但swap在C++ STL中散发着无穷的魅力.下面将详细的说明泛型算法swap和容器中的swap成员函数的使用! 1. 泛型算法swa ...

  2. ActiveMQ之ActiveMQ-CPP安装及测试

    在介绍ActiveMQ-CP之前,先介绍下CMS(C++ Messaging Service),CMS是C++程序与消息中间件进行通信的一种标准接口,可以通过CMS接口与类似ActiveMQ这样的消息 ...

  3. 解决Net内存泄露原因

    Net内存泄露原因及解决办法 https://blog.csdn.net/changtianshuiyue/article/details/52443821 什么是.Net内存泄露 (1).NET 应 ...

  4. 剑指offer-第五章优化时间和空间效率(最小的k个数)

    题目:输入n个数,输出最小的k个数. 时间复杂度为O(n) 思路1:我们想的到的最直接的思路就是对这个N个数进行排序,然后就可以找到最小的k个了,同样可以用快排partition.但是只要找到前K个最 ...

  5. SOA的挑战:实体集合【转】

    SOA的挑战:实体集合 发布日期 : 2005-11-06 |  更新日期 : 2005-11-06 Ramkumar Kothandaraman 微软公司 适用于: Microsoft® Visua ...

  6. LeetCode 621. Task Scheduler

    原题链接在这里:https://leetcode.com/problems/task-scheduler/description/ 题目: Given a char array representin ...

  7. web 模板引擎

    baiduTemplate:  http://baidufe.github.io/BaiduTemplate/ artTemplate: https://github.com/aui/artTempl ...

  8. 无敌JS关闭当前窗口代码,不弹出确认提示

    echo "<script type='text/javascript'>window.opener=null;window.open('','_self');window.cl ...

  9. bzoj 4650 & 洛谷 P1117 优秀的拆分 —— 枚举关键点+后缀数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4650 https://www.luogu.org/problemnew/show/P1117 ...

  10. https配置指导

    为了使Apache支持https访问,系统需要安有apache.openssl.mod_ssl.so 证书申请 https://ninghao.net/blog/4449 安装证书时 安装编译open ...