c libghttp ghttp 库使用指南
libghttp是一个很好用的 http 库,能够轻松地实现同步和异步的HTTP请求
目录[隐藏] |
安装
库文件下载:
在64位机器下configure时出现错误信息:
... checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized ... ltconfig: you must specify a host typeif you use `--no-verify' Try `ltconfig --help'formore information. configure: error: libtool configure failed ...
即configure无法识别系统的类型, 所以提示you must specify a host type.
解决方法:
用 /usr/share/libtool/config/config.guess 覆盖源码包中的config.guess
cp/usr/share/libtool/config/config.guess ./config.guess
用 /usr/share/libtool/config/config.sub 覆盖源码包中的 config.sub
cp/usr/share/libtool/config/config.sub ./config.sub
这样configure就可以猜出系统的类型了.
开始安装:
./configure --prefix=/usr/localmakesudomakeinstall
GET示例
/* * libghttp_get.c * http get test * Created on: 2013年10月25日 * Author: elesos.com */ #include <stdio.h>#include <string.h>#include <ghttp.h>int main(int argc,char**argv){char*uri ="http://www.elesos.com/%E9%A6%96%E9%A1%B5"; ghttp_request *request = NULL; ghttp_status status; FILE * pFile;char*buf;int bytes_read;int size; pFile =fopen("elesos.html","wb"); request = ghttp_request_new();if(ghttp_set_uri(request, uri)==-1)return-1;if(ghttp_set_type(request, ghttp_type_get)==-1)//getreturn-1; ghttp_prepare(request); status = ghttp_process(request);if(status == ghttp_error)return-1;printf("Status code -> %d\n", ghttp_status_code(request)); buf = ghttp_get_body(request); bytes_read = ghttp_get_body_len(request); size =strlen(buf);//size == bytes_readfwrite(buf ,1,size , pFile );fclose(pFile);return0;}
POST示例
int post_test(){char szXML[2048];char szVal[256]; ghttp_request *request = NULL; ghttp_status status;char*buf;char retbuf[128];int len; strcpy(szXML,"POSTDATA=");sprintf(szVal,"%d",15);strcat(szXML, szVal); printf("%s\n", szXML);//test request = ghttp_request_new();if(ghttp_set_uri(request, uri)==-1)return-1;if(ghttp_set_type(request, ghttp_type_post)==-1)//postreturn-1; ghttp_set_header(request, http_hdr_Content_Type,"application/x-www-form-urlencoded");//ghttp_set_sync(request, ghttp_sync); //set sync len =strlen(szXML); ghttp_set_body(request, szXML, len);// ghttp_prepare(request); status = ghttp_process(request);if(status == ghttp_error)return-1; buf = ghttp_get_body(request);//testsprintf(retbuf,"%s", buf); ghttp_clean(request);return0;}
源代码打包下载:艺搜下载
一般在do{}while(1)中,选择使用同步的方式;
如果是set(callback)的方式,这时可以使用异步的方式。如果是异步的方式,一般涉及到对接收包的排序问题。参见同步和异步的区别
相关函数
ghttp_set_sync(request, ghttp_sync);//设置同步// This is the http request object ghttp_request *request = NULL;// Allocate a new empty request object request = ghttp_request_new();// Set the URI for the request object ghttp_set_uri(request,"http://localhost:8080/index.html");// Close the connection after you are done. ghttp_set_header(request, http_hdr_Connection,"close");//Prepare the connection ghttp_prepare(request);// Process the request ghttp_process(request);// Write out the body. Note that the body of the request may not be null terminated so we have to be careful of the length.fwrite(ghttp_get_body(request), ghttp_get_body_len(request),1, stdout);//Destroy the request. This closes any file descriptors that may be open and will free any memory associated with the request. ghttp_request_destroy(request);
艺搜参考
http://lfs.linuxsir.org/htdocs/blfscvs/gnome/libghttp.html
http://oss.org.cn/ossdocs/gnu_linux/lfs/blfs-1.0/gnome/libghttp.html
c libghttp ghttp 库使用指南的更多相关文章
- Linux静态库生成指南
Linux静态库生成指南 Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...
- C++的XML编程经验――LIBXML2库使用指南[转]
C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...
- 北大POJ题库使用指南
原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...
- C++的XML编程经验――LIBXML2库使用指南
C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...
- 现代前端库开发指南系列(二):使用 webpack 构建一个库
前言 在前文中,我说过本系列文章的受众是在现代前端体系下能够熟练编写业务代码的同学,因此本文在介绍 webpack 配置时,仅提及构建一个库所特有的配置,其余配置请参考 webpack 官方文档. 输 ...
- Blazor 组件库开发指南
翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...
- LIBXML2库使用指南2
3. 简单xml操作例子 http://blog.sina.com.cn/s/blog_4673bfa50100b0xj.html 了解以上基本知识之后,就可以进行一些简单的xml操作了.当然,还没有 ...
- Python的dnspython库使用指南
因为平时在测试DNS的时候有些操作手动完成不方便,所以需要用到脚本,而在Python里dnspython这个用于DNS操作的库十分强大,但是无奈网上大部分资料只列举了少部分的用法,所以记录一下我平时使 ...
- POCO文档翻译:POCO C++库入门指南
内容目录 介绍 Foundation库 XML库 Util库 Net库 将这些东西组合到一起 介绍 POCO C++库是一组开源C++类库的集合,它们简化及加速了用C++来开发以网络功能为核心的可移植 ...
随机推荐
- (笔试题)数组A中任意两个相邻元素大小相差1,在其中查找某个数。
题目: 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置. 思路: 很明显,在数组中寻找 ...
- 黑马程序员_<<TCP>>
---------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. TCP/IP 1.概述 要建立连接, ...
- iOS 检查app版本更新操作
iOS 检查app版本更新操作 1:获取本地安装的版本信息: [NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle ...
- Sword框架解析——知识采集流程页面初始化
Sword框架解析——知识采集流程页面初始化 Sword框架解析知识采集流程页面初始化 问题解答流程采集新增页面初始化 1后台t_xt_gnzy表和BLH类 2BLH类的写法前台目录树代码 3登录系统 ...
- Xcode 生成 ipa包
原地址:http://zengwu3915.blog.163.com/blog/static/2783489720136213239916/ app store的审核收费的需要二周,免费的需要一个月左 ...
- 浅析JDK中ServiceLoader的源码
前提 紧接着上一篇<通过源码浅析JDK中的资源加载>,ServiceLoader是SPI(Service Provider Interface)中的服务类加载的核心类,也就是,这篇文章先介 ...
- Python 命令行输出的颜色设置
Console上运行的python程序,有没有办法让print输出的文本可以显示不同的颜色? 这个其实跟python无关,跟具体所用console的类型有关系,不同的类型对应不同的控制码,如果是ans ...
- Unicode 与UTF-8 关系
作者:邱昊宇链接:https://www.zhihu.com/question/23374078/answer/24385963来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 比较全的log4j示例
<?xml version="1.0" encoding="UTF-8"?> <configuration status="off& ...
- 分享阿里云SLB-负载均衡的实现基本原理架构
负载均衡技术原理浅析 https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.7839438.2.6.XBbX5l 阿里定制版的LVC ...