• 大小: 1.58MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-13
  • 语言: 其他
  • 标签: curl  http  https  ftp  

资源简介

基于开源库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\applink.c

     文件      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个文件信息

评论

共有 条评论