資源簡介
libcurl for Android,支持ssl,使用cyassl編譯,非常小,附帶一個下載文件的示例

代碼片段和文件信息
#include?
#include?
#include?“DownloadModule.h“
DownLoadModule::DownLoadModule(bool?binit)?:
m_pCurl(NULL)
{
bInit?=?binit;
if(bInit)
{
Init();
}
m_pCurl?=?curl_easy_init();
}
DownLoadModule::~DownLoadModule()
{
curl_easy_cleanup(m_pCurl);
m_pCurl?=?NULL;
if(bInit)
{
Cleanup();
}
}
void?DownLoadModule::Init()
{
curl_global_init(CURL_GLOBAL_ALL);
}
void?DownLoadModule::Cleanup()
{
curl_global_cleanup();
}
size_t?DownLoadModule::DownLoadPackage(void?*ptr?size_t?size?size_t?nmemb
void?*userdata)
{
FILE?*fp?=?(FILE*)?userdata;
//LOGD(“dowload:?%d%s“size*nmemb(char?*)ptr);
size_t?written?=?fwrite(ptr?size?nmemb?fp);
return?written;
}
long?DownLoadModule::GetLocalFileLenth(const?string&?strFileName)
{
unsigned?long?filesize?=?0;
struct?stat?statbuff;
if?(stat(strFileName.c_str()?&statbuff)?0)
{
return?filesize;
}
else
{
filesize?=?statbuff.st_size;
}
return?filesize;
}
bool?DownLoadModule::DownLoad(std::string?strUrl?std::string?strStoragePath
std::string?strFileName)
{
bool?bok?=?false;
//?Create?a?file?to?save?package.
if?(0?!=?access(strStoragePath.c_str()?F_OK))
mkdir(strStoragePath.c_str()?S_IRWXU?|?S_IRWXG?|?S_IROTH?|?S_IXOTH);
const?string?outFileName?=?strStoragePath?+?“/“?+?strFileName;
//long?localLen?=?GetLocalFileLenth(outFileName.c_str());
DownloadUserData?userData;
userData.pf?=?NULL;
strcpy(userData.FileNameoutFileName.c_str());
FILE?*fp?=?fopen(outFileName.c_str()?“a+b“);
if?(!fp)
{
//LOGD(“fopen?%s?fail.“outFileName.c_str());
return?bok;
}
fseek(fp?0?SEEK_END);
//?Download?pacakge
CURLcode?res;
curl_easy_setopt(m_pCurl?CURLOPT_URL?strUrl.c_str());
curl_easy_setopt(m_pCurl?CURLOPT_WRITEFUNCTION?DownLoadPackage);
curl_easy_setopt(m_pCurl?CURLOPT_WRITEDATA?fp);
curl_easy_setopt(m_pCurl?CURLOPT_NOPROGRESS?true);
//curl_easy_setopt(m_pCurl?CURLOPT_TIMEOUT?30);
curl_easy_setopt(m_pCurl?CURLOPT_NOSIGNAL?1L);
curl_easy_setopt(m_pCurl?CURLOPT_HEADER?0L);
curl_easy_setopt(m_pCurl?CURLOPT_NOBODY?0L);
curl_easy_setopt(m_pCurl?CURLOPT_FOLLOWLOCATION?1L);
if(strUrl.find(“https://“)==0)
{
curl_easy_setopt(m_pCurl?CURLOPT_SSL_VERIFYPEER?0L);
curl_easy_setopt(m_pCurl?CURLOPT_SSL_VERIFYHOST?0L);
}
ErrCode?=?0;
//curl_easy_setopt(m_pCurl?CURLOPT_RESUME_FROM?localLen);
//LOGD(“Download:?%s“strUrl.c_str());
res?=?curl_easy_perform(m_pCurl);
if?(res?!=?0)
{
ErrCode?=?res;
//LOGD(“DownLoad?fail:?%d“res);
fclose(fp);
return?bok;
}
fclose(fp);
bok?=?true;
return?bok;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2695??2017-02-05?11:56??DownloadModule.cpp
?????文件????????1050??2017-01-20?08:41??DownloadModule.h
?????目錄???????????0??2017-02-05?11:09??include\
?????文件????????2181??2017-01-20?08:41??include\Makefile.am
?????文件???????21822??2017-01-20?08:41??include\Makefile.in
?????文件???????89338??2017-01-20?08:41??include\curl.h
?????文件???????22319??2017-01-20?08:41??include\curlbuild.h
?????文件????????7454??2017-01-20?08:41??include\curlbuild.h.cmake
?????文件????????7143??2017-01-20?08:41??include\curlbuild.h.in
?????文件????????8934??2017-01-20?08:41??include\curlrules.h
?????文件????????2741??2017-01-20?08:41??include\curlver.h
?????文件????????3472??2017-01-20?08:41??include\easy.h
?????文件????????2565??2017-01-20?08:41??include\mprintf.h
?????文件???????14813??2017-01-20?08:41??include\multi.h
?????文件????????1330??2017-01-20?08:41??include\stdcheaders.h
?????文件???????37397??2017-01-20?08:41??include\typecheck-gcc.h
?????目錄???????????0??2017-02-05?11:54??libs\
?????目錄???????????0??2017-02-05?11:54??libs\armeabi\
?????文件??????304704??2017-02-05?11:03??libs\armeabi\libcurl.so
?????目錄???????????0??2017-02-05?11:54??libs\armeabi-v7a\
?????文件??????292424??2017-02-05?11:08??libs\armeabi-v7a\libcurl.so
?????目錄???????????0??2017-02-05?11:54??libs\mips\
?????文件??????562576??2017-02-05?11:15??libs\mips\libcurl.so
?????目錄???????????0??2017-02-05?11:54??libs\x86\
?????文件??????480764??2017-02-05?11:12??libs\x86\libcurl.so
- 上一篇:Java研發技術成長路線 思維導圖
- 下一篇:java:靜態web服務器實現http
評論
共有 條評論