curl easy  的使用步骤

curl_easy_init()

curl_easy_setopt()

curl_easy_perform()

curl_easy_cleanup()

------------------------------

//http 返回数据回调

static size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid)
{
std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);
if( NULL == str || NULL == buffer )
{
return -;
} char* pData = (char*)buffer;
str->append(pData, size * nmemb);
return nmemb;
}

1 post 指定的参数到对应的php页面

  CURL *curl;
CURLcode res;
  std::string strResponse;
curl = curl_easy_init();
if ( !curl )
{
printf("1\n");
return -;
} curl_easy_setopt( curl , CURLOPT_URL ,"http://xxxy.com/xxx.php" );
curl_easy_setopt( curl , CURLOPT_VERBOSE , ) ;
curl_easy_setopt( curl , CURLOPT_POSTFIELDS , "value1=123&value2=345" ); //php服务器页面可以 echo $_POST["value1"]; 输出对应的值
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
   curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse); 
    res = curl_easy_perform(curl);
if ( res != CURLE_OK )
{
printf("error\n");
return -;
}
curl_easy_cleanup(curl);

2 以表单方式提交数据,上传文件,

char * desUrl = "127.0.0.1/upload.php";

    const char *filePath = "D://110440.jpg"; //文件全路径

    std::string strResponse;
CURL *curl;
CURLcode res; struct curl_httppost *formpost=NULL;
struct curl_httppost *lastptr=NULL; curl_global_init(CURL_GLOBAL_ALL);   /*文件上传表单域填写 */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "file", //php 端用 $_FILES["file"]取得文件信息
CURLFORM_FILE, filePath,
CURLFORM_END);   /* 表单域填写 */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "value1", //php端用$_POST["value1"] 取得对应值
CURLFORM_COPYCONTENTS, "",
CURLFORM_END); curl = curl_easy_init(); if(curl) { curl_easy_setopt( curl , CURLOPT_URL ,desUrl );
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_POST,);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res)); /* always cleanup */
curl_easy_cleanup(curl);
/* then cleanup the formpost chain */
curl_formfree(formpost);

最新文章

  1. 基础知识(javaWeb工程目录结构)及各文件夹的作用
  2. 让VIEWSTATE从页面中完全消失(小技巧)
  3. AutoMappeer自动映射
  4. ubuntu支持shh远程连接记录
  5. android学习笔记31——ADB命令
  6. CreateCompatibleDC与CreateCompatibleBitmap
  7. @Repository、@Service、@Controller 和 @Component(转)
  8. nyoj 448 寻找最大数
  9. android同时使用多个library时的问题
  10. hadoop搭建杂记:Linux下hostname的更改办法
  11. ios7状态栏属性的设置
  12. AWS EC2 CentOS release 6.5 部署zookeeper、kafka、dubbo
  13. [linux]为阿里云ECS(CentOS7)配置IPv6地址
  14. 孟岩:通证(token)和通证经济的目的在于改善现有经济的效率性
  15. 学习gstreamer
  16. 在C语言结构体中添加成员函数
  17. Centos7.03搭建JDK、Tomcat、MySql环境
  18. OCP新题,2019题库出现大量新题,062-第22题
  19. SPI SWD Protocol Implement
  20. Linux基础命令---sudo

热门文章

  1. java基础学习(一)hashcode
  2. 【BZOJ2049】【SDOI2008】洞穴勘测 [LCT]
  3. 【洛谷 P1645】 序列 (差分约束)
  4. hdu 1686 Oulipo (kmp)
  5. MySQL 查询语句练习2
  6. nginx、apache、tomcat的区别
  7. 【LA3461】Leonardo的笔记本
  8. [ 总结 ] nginx 安装过程
  9. [ 总结 ] Linux系统测试硬盘I/O
  10. BZOJ 3098