资源简介
基于开源库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课件源文件
相关资源
- HttpWatch+licensefile
- Drony1.3.154最新中文
- Windows下VS2015编译并使用libcurl.lib静态
- httpd-2.4.25.tar.gz
- HttpAnalyzerFull_V7 (包含激活码,亲测支
- fiddler抓包工具使用说明pdf,解决抓包
- web安全开发指南 高清 带目录 完整版
- 安卓实现 Okhttp https注册登录
- httpd-2.4.38.tar.gz
- Apache httpd-2.4.20-x64.zip
- 字节跳动面试题.pdf
- windows版nginx(1.19.3)包含nginx-http-fl
- 搭建lighttpd+cgi的代码包
- httpd-2.2.16.tar.gz
- Churrasco.exe+nc.exe+http.exe
- 3rdlib.rar
- httpd-2.4.26-1.x86_64.rpm
- HttpClient实现POST GET和文件
- 茶百科源代码
- libcurl.a(with zlib openssl libssh2) 含r
- HTTP协议(RFC2616)中文版
- Linuxcentos下的Apache安装压缩包:httpd
- HttpAnalyzerFullV5 封包分析工具
- Fiddler4最新版5.0.zip
- libcurl静态库[支持https]
- 抓包工具HttpWatch
- HTTP HTTPS POST GET(包含curl版本和winht
- 使用HttpURLConnection或HttpClient方式传j
- STM32_W5500_HTTPC_Download_File.rar
- RCurl爬取天猫评论
评论
共有 条评论