资源简介
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
相关资源
- Android(jni) 单独抽取 WebRtc-NS音频降
- 利用jni技术来使Android5.0以下版本适配
- Java发送HTTP请求GET/POST测试
- assimp for android
- Android调用JNI的简单附详细步骤
- android_libcurl_openssl
- 在android上的车牌识别
- JAVA通过JNI调用C#dll的整个项目工程
- Android 通过JNI实现双守护进程,保证服
- JNI的全部中英文资料,包括Android ND
- android jni 传递对象的demo
- Android JNI demo
- org.apache.http的jar包是使用HttpClient发送
- 安卓MP3录音器源码
- android串口开发demo
- windows平台下的OLLVM4.0,支持so文件中字
- 人脸检测,检测人睁闭眼睛,可以判
- release-1911-x64-gdal-3-0-2-mapserver-7-4-2.zi
-
EasyPla
yer-RTSP - 安卓android版本的curl库
- DlibLandmarks
- Android实现NFC读卡信息
- Android Studio 3.0 JNI的实现
- Android下切换多路USB摄像头
- AndroidStudio 3.1 使用libpcap
- JNI so文件生成,和jni打开设备节点
- 监听android应用被卸载后 再使用libcu
- android串口通讯无bug,供小伙伴们研究
- mips64el-linux-android-4.9
- dynamic_register_jni.zip
评论
共有 条评论