资源简介

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.xml

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

评论

共有 条评论