- 浏览: 164444 次
- 性别:
- 来自: 南京
最新评论
1、下载官方库。
地址:http://curl.haxx.se/download.html#Win32 下载 Win32 - MSVC,下面有两个版本的库,一个是带ssl的,一个是不带ssl的。
不带ssl的:http://curl.haxx.se/download/libcurl-7.18.0-win32-msvc.zip
带ssl的:http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip
2、在VS2010中VC++目录中加入从zip中解压的include目录,和lib目录
3、使用方法为,注意还有debug和Release两种库 :
#include <curl/curl.h> //不带SSL #pragma comment(lib, "libcurl.lib") //带SSL #pragma comment(lib, "libcurl_imp.lib")
4、 下面是我写的用于http和https的学习记录
// libcurl http和https学习记录 2012-6-30 by Dewei // #include "stdafx.h" #include <string> #include <iostream> #include <assert.h> #include "curl/curl.h" #pragma comment(lib, "libcurl_imp.lib") #define SKIP_PEER_VERIFICATION 1 //#define SKIP_HOSTNAME_VERFICATION 1 /* ptr是指向存储数据的指针, size是每个块的大小, nmemb是指块的数目, stream是用户参数。 所以根据以上这些参数的信息可以知道,ptr中的数据的总长度是size*nmemb */ size_t call_wirte_func(const char *ptr, size_t size, size_t nmemb, std::string *stream) { assert(stream != NULL); size_t len = size * nmemb; stream->append(ptr, len); return len; } // 返回http header回调函数 size_t header_callback(const char *ptr, size_t size, size_t nmemb, std::string *stream) { assert(stream != NULL); size_t len = size * nmemb; stream->append(ptr, len); return len; } int _tmain(int argc, _TCHAR* argv[]) { CURL *curl; CURLcode code; std::string szbuffer; std::string szheader_buffer; char errorBuffer[CURL_ERROR_SIZE]; std::string url = "http://www.douban.com"; //std::string url = "https://vip.icbc.com.cn/icbc/perbank/index.jsp"; std::string useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1"; /* CURL_GLOBAL_ALL //初始化所有的可能的调用。 CURL_GLOBAL_SSL //初始化支持 安全套接字层。 CURL_GLOBAL_WIN32 //初始化win32套接字库。 CURL_GLOBAL_NOTHING //没有额外的初始化。 */ curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { // 远程URL,支持 http, https, ftp curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_USERAGENT, useragent.c_str()); // 官方下载的DLL并不支持GZIP,Accept-Encoding:deflate, gzip curl_easy_setopt(curl, CURLOPT_ENCODING, "gzip, deflate"); //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);//调试信息打开 //https 访问专用:start #ifdef SKIP_PEER_VERIFICATION //跳过服务器SSL验证,不使用CA证书 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); //如果不跳过SSL验证,则可指定一个CA证书目录 //curl_easy_setopt(curl, CURLOPT_CAPATH, "this is ca ceat"); #endif #ifdef SKIP_HOSTNAME_VERFICATION //验证服务器端发送的证书,默认是 2(高),1(中),0(禁用) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); #endif //https 访问专用:end //发送cookie值给服务器 //curl_easy_setopt(curl, CURLOPT_COOKIE, "name1=var1; name2=var2;"); /* 与服务器通信交互cookie,默认在内存中,可以是不存在磁盘中的文件或留空 */ curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "./cookie.txt"); /* 与多个CURL或浏览器交互cookie,会在释放内存后写入磁盘文件 */ curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "./cookie.txt"); /* POST 数据 */ // curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl"); //设置重定向的最大次数 curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5); //设置301、302跳转跟随location curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); //抓取内容后,回调函数 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, call_wirte_func); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &szbuffer); //抓取头信息,回调函数 curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback ); curl_easy_setopt(curl, CURLOPT_HEADERDATA, &szheader_buffer); /* CURLE_OK 任务完成一切都好 CURLE_UNSUPPORTED_PROTOCOL 不支持的协议,由URL的头部指定 CURLE_COULDNT_CONNECT 不能连接到remote 主机或者代理 CURLE_REMOTE_ACCESS_DENIED 访问被拒绝 CURLE_HTTP_RETURNED_ERROR Http返回错误 CURLE_READ_ERROR 读本地文件错误 CURLE_SSL_CACERT 访问HTTPS时需要CA证书路径 */ code = curl_easy_perform(curl); if(CURLE_OK == code) { double val; /* check for bytes downloaded */ code = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &val); if((CURLE_OK == code) && (val>0)) printf("Data downloaded: %0.0f bytes.\n", val); /* check for total download time */ code = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &val); if((CURLE_OK == code) && (val>0)) printf("Total download time: %0.3f sec.\n", val); /* check for average download speed */ code = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &val); if((CURLE_OK == code) && (val>0)) printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024); printf("%s\n",szbuffer.c_str()); } else { fprintf(stderr, "Failed to get '%s' [%s]\n", url, errorBuffer); // exit(EXIT_FAILURE); } /* 释放内存 */ curl_easy_cleanup(curl); } curl_global_cleanup(); getchar(); return 0; }
提示:
若没有找到zlib1.dll文件。
到
http://gnuwin32.sourceforge.net/downlinks/zlib-bin-zip.php
下载zib包,将dll文件拷贝至debug目录,程序即可正常执行了。
发表评论
-
C风格日期时间在std c++中使用备忘
2013-10-25 17:47 1310//包含的头文件 #include <ctime&g ... -
查找HTML代码“超级链接”中含有域名的函数
2013-10-22 17:48 1970需求:在一段HTML里寻找超级链接中(正文文本)域名。 ... -
纯C实现MD5加密
2013-10-21 11:17 2243序 真是天下文章一大抄,国内的牛人们在抄国外的开源 ... -
libcurl 编译支持gzip、ssl、c-ares
2013-10-17 08:50 8666使用CURLOPT_NOSIGNAL后必须启用异步DNS,因 ... -
VC获取windows 安装内存(RAM)
2013-10-11 16:10 1466//起因:在某些机器上无法使用GlobalMemorySt ... -
Visual Studio 2010/2013 string对UTF8的支持总结
2013-09-12 00:13 11531VisualStudio 2010 SP1环境 1 ... -
stringstream 的.str()正确用法和清空操作
2013-09-11 14:53 7328streamstring在调用str()时,会返回临时的st ... -
C语言实现 strpos 查找字符串首次出现位置
2012-08-17 19:50 9622今天又写了个函数,查找字符串首次出现位置,以此作为记录: / ... -
C/C++ 字符串为空判断 效率比较
2012-08-16 19:22 21707为了测试判断字符串为空的效率,今天特意做了一个测试。得出以下结 ... -
C/C++ URL编码,解码(提取自PHP)
2012-08-13 23:59 11948偶然发现,网上已经有很多对PHP的URL编解码函数提取的文章, ... -
VC++ 编译libcurl 支持SSL,GZIP
2012-07-12 22:58 17312由于网上下载的 libcurl ... -
jsoncpp 简明学习(含类似php的print_r函数)
2012-06-30 12:59 2872C++ 处理JSON学习记录,今天整理了一下,把测试代码全文发 ... -
C/C++ 文件读写操作
2012-06-25 00:09 2235标准C++ 读写文件内容: //标准C++ 读文件 ... -
C++ 字符串操作学习
2012-06-24 17:05 4539为什么std::string 连最常用,最基本的功能也没有 ... -
char*, string, CString, String^的相互转换
2012-06-23 14:17 5874从char*转换: char ...
相关推荐
本篇文章将深入探讨如何在VC++环境中利用libcurl库实现文件的下载功能,包括断点续传和多文件下载。 首先,libcurl库需要正确地安装和配置到Visual Studio项目中。这通常涉及到设置库路径、包含目录以及链接器依赖...
**VC6.0 libCurl 简单使用** libCurl 是一个广泛使用的开源库,主要用于处理URL传输,支持多种网络协议,如HTTP、HTTPS、FTP、FTPS等。在Windows环境中,尤其是在Visual C++ 6.0(简称VC6.0)这样的老版本开发工具...
libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。 PHP自带curl扩展,但java没有curl扩展,这个工程的目的,就是将...
本篇文章将详细讲解如何在VC6中使用libCurl库,以及如何结合提供的简单使用例子进行项目集成。 首先,你需要下载libCurl的源码或预编译库。在这个压缩包中,你可能已经得到了一个预先编译好的静态库文件。静态库的...
**libcurl_vc14** 是一个专为Visual Studio 2015 (vc14) 构建的libcurl库,它允许开发者在Windows平台上利用C++进行HTTP、FTP、FTPS等多种网络协议的交互。libcurl是一个开源的库,提供了在各种编程语言中方便地处理...
**libcurl_vc15** 是一个专门为Visual Studio 2017(vc15)编译的libcurl库,适用于Windows平台。libcurl是一个著名的开源库,它允许开发者通过多种网络协议,包括HTTP、FTP、FTPS等,进行数据传输。这个库提供了...
标题 "libcurl-vc15-x64-release-static-ipv6-sspi-schannel.rar" 暗示了这是一个针对Windows平台的libcurl库的特定版本。libcurl是一个开源的库,用于处理各种网络协议,如HTTP、FTP、SMTP等。这里的"vc15"指的是...
总之,libcurl是一个强大的网络通信库,其静态库版本特别适合在vc6环境中使用。通过熟练掌握libcurl的使用,开发者可以轻松地实现各种复杂的网络通信任务,如文件上传下载、网页抓取、邮件发送等。在vc6项目中正确...
在描述中提到了该库文件是使用Visual Studio 2010(VS2010)编译的,这意味着这个libcurl版本是为Windows平台设计的,并且兼容VC10编译器。"vc10"代表Visual C++ 2010,"x86"表示这是针对32位系统的版本,"release...
在Windows环境下,Visual Studio 2015(VS2015)是一个广泛使用的C++开发工具,而libcurl是一个强大的URL传输库,支持多种网络协议。本教程将详细介绍如何在VS2015中编译并使用libcurl.lib静态库。 首先,你需要...
《深入理解libcurl库在VS2013下的编译与应用》 libcurl库,一个广泛应用于网络数据传输的开源库,为开发者提供了在C和...对于新手和有经验的开发者而言,这都是一个宝贵的资源,能帮助他们更好地理解和使用libcurl库。
《libcurl在VS2010环境下的编译与应用详解》 libcurl是一个强大的开源库,用于处理各种网络协议,如HTTP、FTP、SMTP等,广泛应用于客户端网络通信。本资源提供了使用Visual Studio 2010编译的libcurl动态库(dll)...
在本文中,我们将深入探讨如何在Qt环境下封装和使用libcurl库,以及如何构建一个简单的HTTP服务器。libcurl是一个强大的库,它允许开发者在各种编程语言中实现多种网络协议,包括HTTP、HTTPS、FTP等。在Qt环境中使用...
《libcurl动态库详解及其应用》 libcurl是一款强大的开源库,主要用于在各种协议下进行文件传输,尤其在HTTP和HTTPS方面表现出色。这个库以其跨平台性、易用性和全面的功能,深受开发者喜爱。标题提到的“libcurl...
使用这个库,C++开发者可以轻松实现以下功能: - 发送HTTP和HTTPS请求 - 下载和上传文件 - 处理POST请求和表单提交 - 实现HTTP认证和cookie管理 - 支持多种传输协议 - 进行多线程和并发请求 - 错误处理和调试信息...
**libcurl库详解** libcurl是一个强大的开源库,主要用于处理URL相关的各种网络传输任务,包括HTTP、HTTPS、FTP、FTPS等多种协议。它为开发者提供了一组API,使得在多种编程语言中进行网络请求变得非常方便。...
使用 libcurl 库需要调用 curl_global_init() 函数来初始化库,然后调用 curl_easy_init() 函数来获取 easy interface 型指针。接着,可以使用 curl_easy_setopt() 函数来设置传输选项,然后调用 curl_easy_perform...
在iOS端使用libcurl,首先需要获取适用于iOS的静态库版本。静态库的优点是将所有依赖项包含在内,避免了运行时找不到动态库的问题,尤其适合那些不希望或不能在用户设备上安装额外框架的应用。本压缩包提供的libcurl...
**libcurl静态库详解** libcurl是一个开源的C库,它提供了一组API,用于在各种协议下进行文件传输,包括HTTP、HTTPS、FTP、FTPS等。这个库被广泛应用于许多应用程序中,用于实现网络数据交换功能。本文将深入探讨...
1. **安装**:解压"libcurl 8.0.1 VC13 SDK.zip",将包含的头文件(通常是`include`目录)、库文件(通常是`lib`目录)和DLL文件(通常是`bin`目录)添加到你的项目路径中。 2. **配置项目**:在Visual Studio 2013...