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)。

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获取网络数据相关推荐

  1. android—获取网络数据

    取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子. 大家都知道,网络通信,发送请求有两种方式 ...

  2. 安卓 原生okhttp使用get与post获取网络数据

    网址 https://square.github.io/okhttp/ 配置 依赖 在module的build.gradle中: implementation 'com.squareup.okhttp ...

  3. Swift实战-豆瓣电台(三)获取网络数据

    原文:Swift实战-豆瓣电台(三)获取网络数据 观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboar ...

  4. Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云)

    Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云) 学习目标 获取网络数据Socket API接口 网络爬虫Crawler(制 ...

  5. 【搬运自用】 用Python获取网络数据 -Python100天从新手到大师Day57(GitHub)

    用Python获取网络数据 原作者:骆昊 https://github.com/jackfrued/Python-100-Days 更多内容欢迎查看并订阅专栏'Python从新手到大师'和'Pytho ...

  6. Arduino ESP32 获取网络数据(HTTP POST方式)

    Arduino ESP32 获取网络数据(HTTP POST方式) 相关篇<Arduino ESP32 获取网络数据(HTTP GET方式)> <Arduino ESP32 获取网络 ...

  7. Arduino ESP32 获取网络数据(HTTP GET方式)

    Arduino ESP32 获取网络数据(HTTP GET方式) 相关篇<Arduino ESP32 获取网络数据(HTTP POST方式)> <Arduino ESP32 获取网络 ...

  8. Android 使用Get请求获取网络数据(极速数据)

    1.环境配置 android studio 2.3.3 java 16.0.1 1.1.配置Json库 需要准备的jar包:json-lib-2.4-kdj15.jar 第一步:拷贝需要用到的jar包 ...

  9. UITableView上下滚动卡顿(获取网络数据,下载图片之后)

    今天遇到一个问题,从网络上,下载图片之后tableview上下滚动会很卡  通过上网查资料,找到解决办法  因为下载图片的时候是在主线程进行的  通过开辟一个子线程去下载图片 tableview上下滚 ...

最新文章

  1. 腾讯绝地求生手游席卷全球,104个国家地区IOS登顶
  2. 树莓派3b python3.6.1 SSL模块调用不起来的坑
  3. 39.原码、反码、补码的转换
  4. 批作业是小学老师的一大乐趣 | 今日最佳
  5. Maven笔记——maven下载与配置
  6. 基于NPOI的报表引擎——ExcelReport
  7. 案例:监听域对象的属性变更
  8. php连接数据库配置优化,小蚂蚁学习mysql性能优化(9)--操作系统配置优化--mysql配置文件优化...
  9. 研发管理和项目管理有哪些痛点?
  10. html5的canvas绘制迷宫地图
  11. 引领团队追求高绩效结果
  12. 证书服务器搭建与邮件签名加密
  13. 第049篇:VBA之合并单元格、取消合并单元格并保留原来的数据
  14. DB DBMS SQL 分别是什么?
  15. 如何在HTML中引用jQuery函数库
  16. 原子钟(atomic clock)
  17. 【JS基础】立即执行函数表达式(自执行函数)
  18. 预备作业:有关技能以及“做中学”
  19. 修复gnome3下chrome鼠标主题不正确的问题
  20. BinarySearchTree(二分查找树)

热门文章

  1. java中常量有初始化值吗,Java基础_变量、常量
  2. win10卸载db2_如何在Linux下干净卸载db2数据库
  3. java axis2 jar_Java axis2.jar包详解及缺少jar包错误分析
  4. 实验7-3-4 字符串替换 (15 分)
  5. PS5运行Linux,索尼发布最新驱动!PS5手柄现在已支持Linux系统
  6. 电脑管家pc版离线包_王国统治电脑版下载_王国统治游戏pc版下载[策略经营]
  7. C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理
  8. uva-10245-分治
  9. 如何正确上传一张图片?
  10. WSL2 下的 Docker 配置,使用网易云镜像 + 更改 docker 文件系统(否则无法 apt update)