当前位置:   article > 正文

基于libcurl库使用c语言实现https访问第三方平台做人脸识别_libcurl c

libcurl c

Libcurl库

  • 简介:

    • libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。
  • 下载(方法不唯一)

  • 解压(不要在Windows环境下解压)

    • .tar.gz 和 .tgz类型压缩包解压
      • tar zxvf FileName.tar.gz
  • 找到安装库的方法(适用于很多库)

    • 找到INSTALL文件(一般会在docs文件夹内),根据提示查看INSTALL.md文件
      • ./configure (后面可以接安装路径,如果后面没有任何参数就默认安装):配置
        • 相关配置
          • 路径
            • ./configure --prefix=想要配置的路径
          • 功能取舍
            • ./configure --with-相关功能(想要安装的功能)
            • ./configure --without-相关功能(不想安装的功能)
      • make:编译
      • make test (optional:意思是这一项可以没有)
      • make install:把编译的结果拷贝到系统根目录相关文件夹底下,这样操作可能用到root用户权限,因为./configure默认安装路径可能普通用户并不满足权限要求(一般来说./configure都是需要指定安装路径,这样可以明确的知道把库安装到哪里)
  • 安装

    • ./configure --prefix=$PWD/_install (–host=arm-linux)
      • –host=arm-linux:这一参数是指定编译工具,默认使用GCC。如果该库在树莓派环境下安装不需要指定编译工具:树莓派环境下的GCC就是基于arm-linux的,而如果在ubuntu环境下安装此库希望用来生成树莓派的程序则需要指定编译工具是arm-linux(交叉编译)
      • $PWD/_install:指定当前工作目录下的_install文件(如果当前目录下没有_install文件会自动生成)
      • 遇到的问题
        • configure: error: select TLS backend(s) or disable TLS with --without-ssl.
          • ./configure --prefix=$PWD/_install –with-openssl(加上with-openssl)
          • 新的问题:configure: error: --with-openssl was given but OpenSSL could not be detected
            • 安装 openssl 的编译依赖
              • sudo apt-get install libssl-dev
          • 再次执行./configure --prefix=$PWD/_install --with-openssl
    • make
    • make install
      • 成功后出现_install
  • 使用

    • 调用curl_global_init()初始化libcurl
    • 调用curl_easy_init()函数得到 easy interface型指针
    • 根据curl_easy_setopt()设置的传输选项,实现回调函数以完成用户特定任务
    • 调用curl_easy_perform()函数完成传输任务
    • 调用curl_easy_cleanup()释放内存
  • 函数解读

    • CURLcode curl_global_init(long flags);

      • 这个函数只能用一次。(其实在调用curl_global_cleanup 函数后仍然可再用)
      • 不要在每个线程中都调用curl_global_init,应该将该函数的调用放在主线程中。
      • 参数:flags
        • CURL_GLOBAL_ALL //初始化所有的可能的调用。(一般使用这个参数就可以了)
          CURL_GLOBAL_SSL //初始化支持 安全套接字层。
          CURL_GLOBAL_WIN32 //初始化win32套接字库。(Linux用不到)
          CURL_GLOBAL_NOTHING //没有额外的初始化。
    • void curl_global_cleanup(void);

      • 在结束libcurl使用的时候,用来对curl_global_init做的工作清理。类似于close的函数。
    • CURL *curl_easy_init( );

      • 一般curl_easy_init意味着一个会话的开始. 它会返回一个easy_handle(CURL*对象), 一般都用在easy系列的函数中.(像是返回一个fd:类似于句柄,之后的操作都基于这个fd进行)
    • CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

      • 这个函数最重要了几乎所有的curl程序都要频繁的使用它.它告诉curl库.程序将有如何的行为. 比如要查看一个网页的html代码等.(这个函数有些像ioctl函数)

      • 参数:

        • CURL *handle:CURL类型的指针

        • CURLoption option

        • parameter

          • 这个参数与第二个参数有关
          • 当第二个参数设置为CURLOPT_URL,那么第三个参数设置要访问的网址如:“www.baidu.con”
    • CURLcode curl_easy_perform(CURL *handle);

      • 这个函数在初始化CURL类型的指针以及curl_easy_setopt完成后调用,就像字面的意思所说perform就像是个舞台,让我们设置的option运作起来。
      • 参数
        • CURL *handle:CURL类型的指针

树莓派使用Liburl库结合第三方平台(翔云)实现人脸识别

翔云平台使用

将美女图片作为识别对象

代码

编译:gcc demo.c -o demo -I /home/theone/Desktop/curl-8.0.1/include/ -L /home/theone/Desktop/curl-8.0.1/_install/lib -lcurl (编译时需要链接库以及头文件,可做参考)

运行结果对比

  • 代码上传识别获取返回信息

  • 直接在官方上传图片识别
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号