資源簡介
基于開源庫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課件源文件
評論
共有 條評論
- 頂一次
- 踩一次 1400 次