• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    6年前 (2013-03-06)  开源项目 |   抢沙发  15 
    文章评分 0 次,平均分 0.0

    今天来点评一下cURL ,这是一个老资格的开源项目,使用它可以基于多种应用层网络协议进行数据传输(包括上传和下载)。它的特点是:支持的协议多、跨平台、支持多种编程语言接口。后面我会针对这些特点作一些简单的介绍。
      cURL项目实际上包含两个部分:命令行工具和编程用的库(libcurl )。两者支持的功能基本相同。由于开发人员更多地是和libcurl打交道,所以后面我会主要介绍libcurl。

      ★支持多种应用层协议
      多种网络协议支持是cURL的主要卖点。截至到目前的7.19.4版本,它支持的网络协议有:FTP、FTPS、HTTP、HTTPS、SCP (secure copy)、SFTP (SSH FTP)、TFTP (trivial FTP)、TELNET、DICT 、LDAP 、LDAPS和FILE ,够全的吧?
      ◇HTTP
      HTTP估计是最常用的一种协议,我简单说一下cURL对HTTP支持的程度。
      对于协议版本,cURL支持HTTP 1.0和HTTP 1.1。
      对于请求方式:cURL支持GET、POST、PUT、File Upload POST。
      对于代理(Proxy)类型:包括HTTP Proxy、SOCKS4 Proxy、SOCKS5 Proxy。
      另外,还可以设定HTTP认证的用户名口令,cookies,referer URL等许多杂七杂八的东东。
      ◇SSL加密
      假如你要支持某些依赖SSL /TLS 的协议(比如HTTPS、FTPS),则需要用到OpenSSL 库。在cURL的下载页面 上标注有SSL标志的压缩包,都内置了OpenSSL 的动态库。另外,在cURL配置SSL证书的相关说明,可以参见"这里 "。

      ★跨平台
      cURL支持的平台是相当多的。即使是一些冷门的操作系统(比如DOS、OS/2),它也支持得很好。
      另外,cURL官方网站的下载页面 提供了基于不同平台的、编译好的、二进制文件供大伙儿直接使用。对于Linux,它还根据不同厂商、不同发行版本,分别提供二进制文件,考虑相当周到。相比某些开源项目只提供源代码(使用者需要自己动手编译),cURL算是很方便的一个。

      ★多种编程语言支持
      和上次点评的SQLite 一样,libcurl也支持多种编程语言的绑定,而且cURL整合的编程语言比SQLite 还要多。下面列了一些比较常见的编程语言和平台提供的cURL接口。
      ◇C/C++
      cURL本身是C写的,因此C和C++可以直接调用它的C接口API。在cURL的源码包中带有很多C的示例,大伙儿可以依样画葫芦。
      喜欢OO的同学,可以使用cURLpp 提供的C++包装类。这玩意儿使用MIT许可协议。
      ◇Java
      cURL和Java的整合通过JNI实现。可以在"这里 "下载压缩包,然后自己编译出相关的动态库和class文件。懒惰的同学可以到"这里 "捡现成。
      ◇Python
      pycurl 是cURL的Python包装库。如果你觉得Python内置的urllib 功能不够,可以考虑用它。这玩意儿使用双重许可协议:LGPL和MIT/X。
      ◇dotNET
      cURL和dotNET的绑定libcurl.NET 。这玩意儿只支持Win32操作系统。不过不要紧,对于非Windows系统,可以使用cURL的Mono 绑定libcurl.mono 。
      ◇Visual Basic
      cURL和VB的绑定libcurl.vb 。这个项目和上述的libcurl.NET 都是由同一个作者维护的,也都使用MIT许可协议。
      ◇PHP
      PHP要支持cURL相对简单多了。在PHP官方网站 上有相关的安装/配置说明。
      ◇Ruby
      cURL的Ruby的绑定Curb 。这玩意儿使用Ruby许可协议。
      ◇Perl
      cURL和Perl的绑定WWW::Curl::Easy 。这玩意儿使用MPL或MIT/X许可协议。

      ★应用场景举例
      前面说了很多cURL的特点,下面来随手举几个应用的例子。
      ◇传输文件
      如果你需要在程序中进行文件的上传、下载,使用libcurl会非常方便。由于它支持的协议很多。一旦将来你的应用程序发生需求变更,改用其它协议,你的代码也不用大改。
      ◇调用Web接口
      随着SOA风格的流行,很多比较复杂的系统都会提供很多Web API接口。如果你要在程序中调用Web API接口,可以考虑使用libcurl来实现。
      ◇Web测试
      还记得之前善用自动化 的帖子里提到自动测试的好处吗?由于cURL对HTTP的支持很全。在HTTP协议方面,浏览器能干的活它基本上也能干。再加上它可以和很多脚本语言绑定(除了前面提到的,还可以支持Lua、Tcl、Lisp等脚本)。所以你可以用脚本语言+cURL的方式,来进行某些自动化的Web测试。
      比如测试某Web站点的安全性(是否有SQL注入、XSS跨站脚本等安全漏洞)或者测试某Web接口是否符合文档的约定或者测试某些Web接口的性能或者......

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1410.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享