CURL流程
来源:互联网 发布:PHP returns 编辑:程序博客网 时间:2024/06/09 17:41
原载:http://blog.csdn.net/collin1211/article/details/2422940
在基于LibCurl的程序里,主要采用callback function (回调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时libcurl将调用用户的回调函数实现特定功能。下面是利用libcurl完成传输任务的流程:
1. 调用curl_global_init()初始化libcurl
2. 调用 curl_easy_init()函数得到 easy interface型指针
3. 调用curl_easy_setopt设置传输选项
4. 根据curl_easy_setopt设置的传输选项,实现回调函数以完成用户特定任务
5. 调用curl_easy_perform()函数完成传输任务
6. 调用curl_easy_cleanup()释放内存
在整过过程中设置curl_easy_setopt()参数是最关键的,几乎所有的libcurl程序都要使用它。
一、curl_easy_setopt函数介绍本节主要介绍curl_easy_setopt中跟http相关的参数。注意本节的阐述都是以libcurl作为主体,其它为客体来阐述的。1.CURLOPT_URL设置访问URL2.CURLOPT_WRITEFUNCTION,CURLOPT_WRITEDATA回调函数原型为:size_t function( void *ptr, size_t size, size_t nmemb, void *stream); 函数将在libcurl接收到数据后被调用,因此函数多做数据保存的功能,如处理下载文件。CURLOPT_WRITEDATA 用于表明CURLOPT_WRITEFUNCTION函数中的stream指针的来源。3.CURLOPT_HEADERFUNCTION,CURLOPT_HEADERDATA回调函数原型为 size_t function( void *ptr, size_t size,size_t nmemb, void *stream); libcurl一旦接收到http 头部数据后将调用该函数。CURLOPT_WRITEDATA 传递指针给libcurl,该指针表明CURLOPT_HEADERFUNCTION 函数的stream指针的来源。4.CURLOPT_READFUNCTION CURLOPT_READDATAlibCurl需要读取数据传递给远程主机时将调用CURLOPT_READFUNCTION指定的函数,函数原型是:size_t function(void *ptr, size_t size, size_t nmemb,void *stream). CURLOPT_READDATA 表明CURLOPT_READFUNCTION函数原型中的stream指针来源。5.CURLOPT_NOPROGRESS,CURLOPT_PROGRESSFUNCTION,CURLOPT_PROGRESSDATA跟数据传输进度相关的参数。CURLOPT_PROGRESSFUNCTION 指定的函数正常情况下每秒被libcurl调用一次,为了使CURLOPT_PROGRESSFUNCTION被调用,CURLOPT_NOPROGRESS必须被设置为false,CURLOPT_PROGRESSDATA指定的参数将作为CURLOPT_PROGRESSFUNCTION指定函数的第一个参数6.CURLOPT_TIMEOUT,CURLOPT_CONNECTIONTIMEOUT:CURLOPT_TIMEOUT 由于设置传输时间,CURLOPT_CONNECTIONTIMEOUT 设置连接等待时间7.CURLOPT_FOLLOWLOCATION设置重定位URLCURLOPT_RANGE: CURLOPT_RESUME_FROM:断点续传相关设置。CURLOPT_RANGE 指定char *参数传递给libcurl,用于指明http域的RANGE头域,例如:表示头500个字节:bytes=0-499表示第二个500字节:bytes=500-999表示最后500个字节:bytes=-500表示500字节以后的范围:bytes=500-第一个和最后一个字节:bytes=0-0,-1同时指定几个范围:bytes=500-600,601-999CURLOPT_RESUME_FROM 传递一个long参数给libcurl,指定你希望开始传递的偏移量。
二、curl_easy_perform 函数说明(error 状态码)该函数完成curl_easy_setopt指定的所有选项,本节重点介绍curl_easy_perform的返回值。返回0意味一切ok,非0代表错误发生。主要错误码说明:1.CURLE_OK任务完成一切都好2.CURLE_UNSUPPORTED_PROTOCOL不支持的协议,由URL的头部指定3.CURLE_COULDNT_CONNECT不能连接到remote 主机或者代理4.CURLE_REMOTE_ACCESS_DENIED访问被拒绝5.CURLE_HTTP_RETURNED_ERRORHttp返回错误6.CURLE_READ_ERROR读本地文件错误
0 0
- CURL流程
- curl
- curl
- CURL
- curl
- curl
- Curl
- cURL
- CURL
- curl
- curl
- curl
- curl
- curl
- curl
- CURL
- curl
- curl
- VXLAN学习整理
- MySQL图形化工具
- JAVA CAS单点登录(SSO)
- 搜索引擎Solr环境搭建详解
- 页面效果随手记
- CURL流程
- PAT A1114. Family Property
- maven打可执行jar包
- 各种条件控制语句的smali表达
- python 安装anaconda, numpy, pandas, matplotlib
- 小白笔记---------------------------------------java关键词final
- js日期格式化函数
- 阿里巴巴常考面试题及汇总答案
- 2017-03-03