資源簡介
android jni使用curl進行http請求和文件下載,具體說明參考博客
http://blog.csdn.net/csdn49532/article/details/50680716

代碼片段和文件信息
#include?
#include?
#include?“DownloadModule.h“
DownLoadModule::DownLoadModule()?:
m_pCurl(NULL)
{
m_pCurl?=?curl_easy_init();
}
DownLoadModule::~DownLoadModule()
{
curl_easy_cleanup(m_pCurl);
m_pCurl?=?NULL;
}
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;
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;
}
int?DownLoadModule::DownLoad(std::string?strUrl?std::string?strStoragePath
std::string?strFileName)
{
Init();
//?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());
FILE?*fp?=?fopen(outFileName.c_str()?“a+b“);
if?(!fp)
{
return?-1;
}
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);
curl_easy_setopt(m_pCurl?CURLOPT_RESUME_FROM?localLen);
res?=?curl_easy_perform(m_pCurl);
Cleanup();
if?(res?!=?0)
{
fclose(fp);
return?res;
}
fclose(fp);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????475??2015-12-14?16:37??curlTest\.classpath
?????文件???????3700??2015-12-14?16:41??curlTest\.cproject
?????文件???????1468??2015-12-14?16:41??curlTest\.project
?????文件????????177??2015-12-14?10:30??curlTest\.settings\org.eclipse.jdt.core.prefs
?????文件???????1088??2016-02-17?10:31??curlTest\AndroidManifest.xm
?????文件??????51394??2015-12-14?10:30??curlTest\ic_launcher-web.png
?????文件????????447??2016-02-17?11:23??curlTest\jni\Android.mk
?????文件????????126??2016-02-16?11:45??curlTest\jni\Application.mk
?????文件??????89338??2015-12-17?17:24??curlTest\jni\include\curl\curl.h
?????文件??????22319??2015-12-17?17:24??curlTest\jni\include\curl\curlbuild.h
?????文件???????7454??2015-12-17?17:24??curlTest\jni\include\curl\curlbuild.h.cmake
?????文件???????7143??2015-12-17?17:24??curlTest\jni\include\curl\curlbuild.h.in
?????文件???????8934??2015-12-17?17:24??curlTest\jni\include\curl\curlrules.h
?????文件???????2741??2015-12-17?17:24??curlTest\jni\include\curl\curlver.h
?????文件???????3472??2015-12-17?17:24??curlTest\jni\include\curl\easy.h
?????文件???????2181??2015-12-17?17:24??curlTest\jni\include\curl\Makefile.am
?????文件??????21822??2015-12-17?17:24??curlTest\jni\include\curl\Makefile.in
?????文件???????2565??2015-12-17?17:24??curlTest\jni\include\curl\mprintf.h
?????文件??????14813??2015-12-17?17:24??curlTest\jni\include\curl\multi.h
?????文件???????1330??2015-12-17?17:24??curlTest\jni\include\curl\stdcheaders.h
?????文件??????37397??2015-12-17?17:24??curlTest\jni\include\curl\typecheck-gcc.h
?????文件?????165172??2016-02-16?15:26??curlTest\jni\lib\armeabi\libcurl.so
?????文件?????161080??2016-02-16?15:25??curlTest\jni\lib\armeabi-v7a\libcurl.so
?????文件?????247388??2016-02-16?15:26??curlTest\jni\lib\x86\libcurl.so
?????文件???????2159??2016-02-16?16:19??curlTest\jni\src\DownloadModule.cpp
?????文件????????753??2016-02-16?16:19??curlTest\jni\src\DownloadModule.h
?????文件???????1907??2016-02-17?15:59??curlTest\jni\src\HttpPostModule.cpp
?????文件????????805??2016-02-17?15:59??curlTest\jni\src\HttpPostModule.h
?????文件???????2128??2016-02-17?14:41??curlTest\jni\src\JNIUtil.cpp
?????文件????????777??2016-02-17?14:43??curlTest\jni\src\JNIUtil.h
............此處省略46個文件信息
- 上一篇:JAVA簡單的游戲登錄界面
- 下一篇:Java爬蟲獲取網頁表格數據保存到MySQL
評論
共有 條評論