使用GDAL获取网络数据
2012-08-18 18:03
363 查看
GDAL中提供了一个访问网络数据的接口,具体的帮助文档可以访问这里(http://gdal.org/cpl__http_8h.html)。不过前提是GDAL需要依赖一个第三方的开源库libcurl,libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
具体可以访问libcurl的wikipedia,链接在这里。
好了,下面大概说明一下使用方法,首先使用CPLHTTPEnabled()函数来进行检测GDAL是否已经有libcurl来进行支持,然后使用下面的代码来获取URL返回的信息。(下面的地址是我的博客的头像图片URL)。
然后判断pRest释放为NULL,如果不为NULL说明获取信息成功,已经将获取的信息存储在pRest中。之后从pRest中取出内容就可以了。下面是我封装的一个小函数,可以用来获取网络的图片或者文件,然后存储到本地。
使用很简单,比如使用这个下载一个图片,或者一个mp3,就可以使用下面的代码来进行。
上面一个是下载我的CSDN的头像,一个是下载《饥饿游戏》的片尾曲《Safe and Sound》,PS,很好听,推荐一下,呵呵。
具体可以访问libcurl的wikipedia,链接在这里。
好了,下面大概说明一下使用方法,首先使用CPLHTTPEnabled()函数来进行检测GDAL是否已经有libcurl来进行支持,然后使用下面的代码来获取URL返回的信息。(下面的地址是我的博客的头像图片URL)。
CPLHTTPResult *pRest = CPLHTTPFetch ("http://avatar.csdn.net/7/0/7/1_liminlu0314.jpg", NULL);
然后判断pRest释放为NULL,如果不为NULL说明获取信息成功,已经将获取的信息存储在pRest中。之后从pRest中取出内容就可以了。下面是我封装的一个小函数,可以用来获取网络的图片或者文件,然后存储到本地。
bool SaveUrl2File(const char* pszUrl, const char* pszFileName) { if( CPLHTTPEnabled() != TRUE) return false; CPLHTTPResult *pRest = CPLHTTPFetch (pszUrl, NULL); if (pRest == NULL) return false; FILE *pFile = fopen(pszFileName, "wb"); if (pFile == NULL) return false; fwrite( pRest->pabyData, sizeof( GByte ), pRest->nDataLen, pFile ); fclose(pFile); CPLHTTPDestroyResult(pRest); CPLHTTPCleanup(); return true; }
使用很简单,比如使用这个下载一个图片,或者一个mp3,就可以使用下面的代码来进行。
bool bIsSuccess = SaveUrl2File("http://avatar.csdn.net/7/0/7/1_liminlu0314.jpg", "C:\\photo.jpg"); bIsSuccess = SaveUrl2File("http://music.charlottedann.com/songs/Safe%20And%20Sound.mp3 ", " Safe & Sound Taylor Swift mp3");
上面一个是下载我的CSDN的头像,一个是下载《饥饿游戏》的片尾曲《Safe and Sound》,PS,很好听,推荐一下,呵呵。
相关文章推荐
- 使用GDAL获取网络数据
- 使用NSJSONSerialization解析从网络中获取的数据
- Asynctask获取网络数据使用
- 简单的获取网络数据 测试使用
- 第十二篇:Android GET请求获取网络数据以及POST数据(使用HttpURLConnection)
- 使用NSURLSession获取网络数据和下载文件
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- 使用jsoup获取网络数据
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- 使用 HttpURLConnection 获取不到网络数据
- 使用AFinal框架实现HTTP请求从网络获取数据
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第三节 实例一:网络数据流量图
- MVVM模式初体验(使用ReactiveCocoa获取网络数据)
- 【Android】使用http的Post和Get方式获取网络数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android之网络----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- MVP框架使用Fretiofit获取网络数据使用xrecycleview实现上拉加载下拉刷新
- 获取网络Json格式数据-使用原生态解析Json
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)