资源简介
基于开源库curl,封装curl工具类支持http,https,ftp(上传、下载、远端目录列表获取),《此类封装可夸平台》

代码片段和文件信息
#include “curltools.h“
#include
#include
#include
#include
#ifdef WIN32
#include
#else
#include
#endif
//参数文档地址:https://curl.haxx.se/libcurl/c/libcurl-tutorial.html
namespace _CURL_
{
/**
* buf: 从服务器返回的buffer
* unit: buufer的单位
* bufSize: buffer的大小
* data: 保存从服务器返回的内容
* 注意这个函数会被调用多次
*/
static size_t write_data(void *buf size_t unit size_t bufSize std::string * data)
{
int size = unit * bufSize;
char * tmp = (char*)malloc(size + 1);
memcpy(tmp buf size);
tmp[size] = ‘\0‘;
data->append(tmp);
free(tmp);
return size;
}
static size_t ftp_read(void *ptr size_t size size_t nmemb void *stream)
{
curl_off_t nread;
size_t retcode = fread(ptr size nmemb (FILE *)stream);
nread = (curl_off_t)retcode;
return retcode;
}
//ftp 文件结构
typedef struct FtpFile
{
char filename[512]; //文件名称
FILE *stream; //文件操作指针
}FTP_FILE *LPFTP_FILE;
static size_t ftp_write(void *buffer size_t size size_t nmemb
void *stream)
{
struct FtpFile *out = (struct FtpFile *)stream;
if(out && !out->stream) {
out->stream = fopen(out->filename “wb“);
if(!out->stream)
return -1;
}
return fwrite(buffer size nmemb out->stream);
}
//智能初始化curl库和释放curl库
class CurlIntelligence
{
public:
CurlIntelligence()
{
curl_global_init(CURL_GLOBAL_ALL);
}
~CurlIntelligence()
{
curl_global_cleanup();
}
};
}
_CURL_::CurlIntelligence g_curl;
/*
* 函数:
* replace(替换字符串)
* 参数:
* pszSrc:源字符串
* pszOld:需要替换的字符串
* pszNew:新字符串
* 返回值:
* 返回替换后的字符串
* ssdwujianhua 2017/12/04
*/
std::string replace(const char *pszSrc const char *pszOld const char *pszNew)
{
std::string strContent strTemp;
strContent.assign( pszSrc );
std::string::size_type nPos = 0;
while( true )
{
nPos = strContent.find(pszOld nPos);
if ( nPos == std::string::npos )
{
break;
}
strTemp = strContent.substr(nPos+strlen(pszOld) strContent.length());
strContent.replace(nPosstrContent.length() pszNew );
strContent.append(strTemp);
nPos +=strlen(pszNew) - strlen(pszOld)+1; //防止重复替换 避免死循环
}
return strContent;
}
CUrlHttp::CUrlHttp(void)
{
}
CUrlHttp::~CUrlHttp(void)
{
}
/*
* 函数:
* Request(请求函数)
* 参数:
* strRequestType:请求类型(get,post)
* strUrl:请求url地址
* strReport:回执信息
* strHeader:请求头
* strCookie:cookie信息
* strCaPath:ca转成pem证书路径
* strParam:请求参数(get的时候此参数填空)
* nTimeOut:超时设置默认是0秒 是无限等待
* 返回值:
* 0表示成功 非0表示错误代码
* ssdwujianhua 2017/06/06
*/
int CUrlHttp::Request(std::string strRequestType
std::string strUrl
std::string &strReport
std::string strParam/* =““ */
std::string strHeader/* =““ */
std::string strCookie/* =““ */
std::str
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16029 2017-12-29 16:15 curl\curltools.cpp
文件 2217 2017-12-29 16:13 curl\curltools.h
文件 301568 2017-07-25 17:05 curl\dll\libcurl.dll
文件 1211392 2017-07-25 14:41 curl\dll\libeay32.dll
文件 275968 2017-07-25 14:41 curl\dll\ssleay32.dll
文件 69120 2017-07-26 09:52 curl\dll\weixin.dll
文件 70656 2017-07-25 10:35 curl\dll\zlib.dll
文件 96240 2017-04-18 07:55 curl\include\curl.h
文件 22393 2017-04-19 07:44 curl\include\curlbuild.h
文件 8378 2017-04-18 07:55 curl\include\curlrules.h
文件 3076 2017-04-19 07:44 curl\include\curlver.h
文件 3473 2017-01-13 10:55 curl\include\easy.h
文件 2071 2016-11-07 10:18 curl\include\mprintf.h
文件 16094 2017-04-18 07:55 curl\include\multi.h
文件 6146 2017-07-25 14:41 curl\include\openssl\aes.h
文件 3176 2017-07-25 14:41 curl\include\openssl\appli
文件 63142 2017-07-25 14:41 curl\include\openssl\asn1.h
文件 34475 2017-07-25 14:41 curl\include\openssl\asn1t.h
文件 24435 2017-07-25 14:41 curl\include\openssl\asn1_mac.h
文件 38742 2017-07-25 14:41 curl\include\openssl\bio.h
文件 5351 2017-07-25 14:41 curl\include\openssl\blowfish.h
文件 41334 2017-07-25 14:41 curl\include\openssl\bn.h
文件 5026 2017-07-25 14:41 curl\include\openssl\buffer.h
文件 5565 2017-07-25 14:41 curl\include\openssl\camellia.h
文件 4659 2017-07-25 14:41 curl\include\openssl\cast.h
文件 3257 2017-07-25 14:41 curl\include\openssl\cmac.h
文件 28641 2017-07-25 14:41 curl\include\openssl\cms.h
文件 2375 2017-07-25 14:41 curl\include\openssl\comp.h
文件 11318 2017-07-25 14:41 curl\include\openssl\conf.h
文件 4147 2017-07-25 14:41 curl\include\openssl\conf_api.h
............此处省略74个文件信息
- 上一篇:servlet用户注册源码
- 下一篇:flash课件源文件
相关资源
- http请求状态代码
- QT 实现文件下载
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- http协议rfc2616中英文双版
- httpclient4.3工具类
- 地址转化器 迅雷,电驴,网盘,快车
- apache-httpd2.5安装及配置(包含教程及
- 易语言HTTP连接请求源码
- okHTTP与HTTPS
- IE7,IE8下也能用的Httpwatch
- pkavhttpfuzzer
- Http Analyzer 7(http抓包工具)7 7.6.4破解
- STM32+BC20通过HTTP传输GPS北斗定位到湖畔
- 易语言 HTTPS模块
- Netscaler中文配置手册.pdf
- 利用openssl和curl库获取https服务端证书
- 通过NodeJS中的http.get() 和 http.requ
- IDEA遇到Internal error. Please refer to http
- RFC2616的中文版
- http服务器测试工具
- 单片机HTTP通信
- 基于okhttp的网络框架
- (中文完整版)HTTP协议1.1.pdf
- HTTP权威指南[中英文对照阅读版].pdf
- 投票、刷票、模拟HTTP链接源码
- openssl-0.9.8k_WIN32.rar
- windows下的curl安装包
- libcurl 提交post表单数据 上传图片 d
- libcurl库支持ssl
- apache/httpd安全配置方法总结
评论
共有 条评论