• 一个很好用的http库 libghttp


    前些时间,由于找不到一个比较好使用的http库,自己封装了一个,不过时间紧迫,也没有完整分析HTTP协议,因此心里总不塌实地使用它,一次偶然的机 会,让我在网上找到一个好用的http库 -- libghttp,目前的版本因该是libghttp-1.0.9. 这个库十分的方便使用,它能够轻松地实现同步和异步的Http请求。 简单使用实例: #include <ghttp.h> int main(int argc, char *argv[]) { char *uri = "http://www.hao123.com"; ghttp_request *request = NULL; ghttp_status status; char *buf; int bytes_read; request = ghttp_request_new(); if(ghttp_set_uri(request, uri) == -1) exit(-1); if(ghttp_set_type(request, ghttp_type_get) == -1) exit(-1); ghttp_prepare(request); status = ghttp_process(request); if(status == ghttp_error) exit(-1); /* OK, done */ printf("Status code -> %d\n", ghttp_status_code(request)); buf = ghttp_get_body(loader->request); bytes_read = ghttp_get_body_len(loader->request); return 0; } 异步请求实例:#include <ghttp.h> int main(int argc, char *argv[]) { char *uri = "http://www.hao123.com"; ghttp_request *request = NULL; ghttp_status status; char *buf; int bytes_read; request = ghttp_request_new(); if(ghttp_set_uri(request, uri) == -1) exit(-1); if(ghttp_set_type(request, ghttp_type_get) == -1) exit(-1); /* NOTE: Set async request */ ghttp_set_sync(request, ghttp_async); ghttp_prepare(request); while(1) { status = ghttp_process(request); if(status == ghttp_error) break; /* NOTE: buf may NULL, notice it */ buf = ghttp_get_body(loader->request); bytes_read = ghttp_get_body_len(loader->request); if(status == ghttp_done) { /* NOTE: Ok, done */ break; } } return 0; } 文件: libghttp-1.0.9.tar.gz 大小: 143KB 下载: 下载
  • 相关阅读:
    vim进阶:better,faster and stronger
    转:开发者如何提升和推销自己
    python 列表及字典(按key、按value排序)
    python繁体中文到简体中文的转换
    svm支持向量机分类方法
    git与svn
    wchar_t与char转换、wstring与string转换
    mysql 事务
    mysql_real_escape_string() vs addslashes() vs addcslashes()
    Safe3 Web漏洞扫描系统 v9.6免费版
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327167.html
Copyright © 2020-2023  润新知