libcurl
是一个用于在 Internet 上进行 HTTP
和 HTTPS
协议通信的开源库。它可以用于创建 HTTP
和 HTTPS
请求、响应和管理套接字。libcurl
还提供了一组钩子函数,可以轻松地与其他 URL 相关的功能(如 FTP 和 Telnet 协议)一起使用。
使用libcurl
步骤:
-
curl_global_init
-
curl_easy_init
创建一个简单的句柄(handle
),启动libcurl eary
会话。此函数必须是第一个要调用的函数,它返回一个CURL
简易句柄,必须将其用作easy
界面中其他函数的输入。操作完成后,必须调用curl_easy_cleanup
。如果前面没有调用curl_global_init
,curl_easy_init
会自动执行此操作。这在多线程情况下可能是致命的,因为curl_global_init
不是线程安全的,并且可能导致资源问题,因为没有相应的清理。
返回值,如果返回NULL
,则出现错误,无法使用其他curl
函数
-
curl_easy_setopt
设置curl easy handle
的选项,用于告诉libcurl
如何操作,通过设置适当的选项,应用程序可以更改libcurl
的行为。
CURLOPT_TIMEOUT
:整个请求超时CURLOPT_NOSIGNAL
:不要安装信号处理程序CURLOPT_URL
:要处理的URLCURLOPT_HTTPHEADER
:自定义HTPP
标头CURLOPT_POSTFIELDS
:发送包含此数据的POST
CURLOPT_WRITEFUNCTION
:写入数据的回调CURLOPT_WRITEDATA
:传递给写回调的数据指针
-
curl_easy_perform
执行阻止文件传输,在curl_easy_init
之后调用此函数并进行所有curl_easy_setopt
调用,并将按照选项中的描述执行传输。
curl_easy_perform
以阻塞方式执行整个请求,并在完成后返回。
在使用相同的easy_handle
时,可以对curl_easy_perform
进行任意数量的调用,如果打算传输多个文件,鼓励这样做,这样libcurl
将尝试为传输重用相同的连接,从而操作更快,CPU密集度更低,并且使用更少的网络资源。请注意,必须在调用之间使用curl_easy_setopt
来设置选项。决不能使用相同的easy_handle
从两个地方同时调用此函数。让函数在再次调用之前先返回。如果想要并行传输,则必须使用多个curl_easy_handles
。
返回值,CURLE_OK(0)
表示一切正常。如果使用curl_easy_setopt
设置CURLOPT_ERRORBUFFER
,则返回非零时,错误缓冲区中将显示可读错误消息。
-
curl_easy_cleanup
结束一个libcurl
简易句柄