libcurl库的使用支持http、https、ftp(上传、下载、远端目录列表获取)

本文介绍了一个libcurl库的简单封装,支持跨平台的HTTP、HTTPS和FTP操作,包括上传、下载和获取远端目录列表。提供了源码下载链接和调用示例,强调了对CA证书、表单提交及FTP长连接的支持。
摘要由CSDN通过智能技术生成

这里是libcurl库的一个简单封装,支持跨平台。

声明:

    本文章可以转载,但必须注明源博客地址。共享的demo和curltools类不允许个人上传网络赚取积分和现金,如有发现必定追究责任,请慎重。


直接下载我上传的资源把curl文件夹解压到工程代码目录下导入curltools头文件和源文件到工程中,方可直接使用。

封装的源码下载地址http://download.csdn.net/download/wu110112/10180420

ftpdemo下载地址:http://download.csdn.net/download/wu110112/10180455


1、支持协议:http、https(短连接封装模式)

2、支持ca证书

3、支持表单提交

4、支持ftp上传/下载/远端目录列表获取(长连接封装模式)

5、支持STL string 字符全局替换功能


http调用如图:



FTP调用如图:


FTP效果如图:


头文件:


#pragma once
#include <string>
#include <vector>
#include "include/curl.h"
#include "include/easy.h"
#pragma comment(lib,"curl/lib/libcurl.lib")

/************************************************************************/
/*           libcurl库封装    ssdwujianhua 2017年6月7日 13:17:11      */
/************************************************************************/

//表单key对应的类型
enum E_KEY_TYPE {
	e_key_text,			//文本类型
	e_key_iamge			//图片类型
};

//表单信息结构
typedef struct 
{
	std::string strKey;
	std::string strVal;
	E_KEY_TYPE eKeyType;

	void Set(std::string key, std::string val, E_KEY_TYPE eType)
	{
		strKey = key;
		strVal = val;
		eKeyType = eType;
	}
}POST_LIST, *LPPOST_LIST;


//表单数据
#define  _POST_LIST_DATA_ std::vector<POST_LIST>

class CTools
{
public:
	static std::string replace(const char *pszSrc, const char *pszOld, const char *pszNew);
	static const char * getAppPath();
};

class CUrlHttp
{
public:
	CUrlHttp(void);
	~CUrlHttp(void);
	static int Request(std::string strRequestType,
		std::string strUrl,
		std::string &strReport,		
		std::vector<std::string> vecHeader,
		std::string strParam="", 
		std::string strCookie="",  
		std::string strCaPath="",
		int nTimeOut=0);

	//有图片建议使用表单提交比较方便
	static int RequestSSL(std::string strUrl,
		std::string &strReport,
		_POST_LIST_DATA_ listParam, 
		std::vector<std::string> vecHeader,
		std::string strCookie="",  
		std::string strCaPath="",
		int nTimeOut=0);
};

class CUrlFtp
{
public:
	CUrlFtp();
	~CUrlFtp();
	typedef struct 
	{
		size_t type;					//0:文件夹 1:文件
		std::string name;				//名称
		std::string permissions;		//权限
	}FILE_INFO, *LPFILE_INFO;
	
public:
	int connect(const char *user, const char *password, const char * ip, short port=21);
	void close();
	int download(const char * remoteFile, const char * localFile, size_t timeOut=0);
	int upload(const char * remoteFile, const char * localFile, size_t timeOut=0);
	int dirlist(const char * remote, std::vector<FILE_INFO> &vecFileInfo);
	const char * getLastError();

private:
		CURL *curl;
		std::string m_ip;
		std::string m_user;
		std::string m_password;
		short m_port;
		std::str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值