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

tar -zxvf libghttp-1.0.9.tar.gz 
cd libghttp-1.0.9
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 库使用指南的更多相关文章

  1. Linux静态库生成指南

    Linux静态库生成指南   Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...

  2. C++的XML编程经验――LIBXML2库使用指南[转]

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  3. 北大POJ题库使用指南

    原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...

  4. C++的XML编程经验――LIBXML2库使用指南

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  5. 现代前端库开发指南系列(二):使用 webpack 构建一个库

    前言 在前文中,我说过本系列文章的受众是在现代前端体系下能够熟练编写业务代码的同学,因此本文在介绍 webpack 配置时,仅提及构建一个库所特有的配置,其余配置请参考 webpack 官方文档. 输 ...

  6. Blazor 组件库开发指南

    翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...

  7. LIBXML2库使用指南2

    3. 简单xml操作例子 http://blog.sina.com.cn/s/blog_4673bfa50100b0xj.html 了解以上基本知识之后,就可以进行一些简单的xml操作了.当然,还没有 ...

  8. Python的dnspython库使用指南

    因为平时在测试DNS的时候有些操作手动完成不方便,所以需要用到脚本,而在Python里dnspython这个用于DNS操作的库十分强大,但是无奈网上大部分资料只列举了少部分的用法,所以记录一下我平时使 ...

  9. POCO文档翻译:POCO C++库入门指南

    内容目录 介绍 Foundation库 XML库 Util库 Net库 将这些东西组合到一起 介绍 POCO C++库是一组开源C++类库的集合,它们简化及加速了用C++来开发以网络功能为核心的可移植 ...

随机推荐

  1. (剑指Offer)面试题58:二叉树的下一个结点

    题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 思路: 考虑中序遍历的过程, 如果当前结点存在右子节点, ...

  2. 推荐9款使用CSS3实现的超酷动画效果

    大家都知道,在网页制作时使用CSS技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制.只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和 ...

  3. [笔记][Java7并发编程实战手冊]3.8 并发任务间的数据交换Exchanger

    [笔记][Java7并发编程实战手冊]系列文件夹 简单介绍 Exchanger 是一个同步辅助类.用于两个并发线程之间在一个同步点进行数据交换. 同意两个线程在某一个点进行数据交换. 本章exchan ...

  4. Java网络爬虫 - 一个简单的爬虫例子

    WikiScraper.java package master.haku.scrape; import org.jsoup.Jsoup; import org.jsoup.nodes.Document ...

  5. Mac安装Myeclipse2015开发环境

    1.下载Myeclipse2015 链接: http://pan.baidu.com/s/1jHe8mFk 密码: qgeb 下载下来后,在安装的时候需要自己设置下安装目标,不然在破解的时候不是太好找 ...

  6. windows在与time.windows.com进行同步时出错

      windows在与time.windows.com进行同步时出错 CreateTime--2017年6月29日10:28:16Author:Marydon 参考地址:http://www.jb51 ...

  7. 19-spring学习-springMVC环境配置

    新建一共环境,添加spring支持,就可以开发springMVC了. 既然是springMVC,就必须为其定义相关配置. 1,springMVC所有配置都需要在applicationContext.x ...

  8. canves 图片旋转 demo

    <!DOCTYPE htmls> <html> <head> <title></title> <style> </styl ...

  9. 数据库选型之MySQL(普通硬盘)

    刘勇   Email:lyssym@sina.com 本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库ta ...

  10. EF Code First 注意事项

    1.异常“实体类型不存在于上下文中” Context类中不包含该实体类型的DbSet,有可能关联关系没有正确设置