mfc,C++,HTTP,POST方式提交请求

来源:互联网 发布:知乎推荐书单排行榜 编辑:程序博客网 时间:2024/04/30 15:27

用到第3方库,libcurl.lib,libcurl.dll

最好从官网下载,下载exe文件,然后安装下,会出现一个curl文件夹,还有libcurl.lib,libcurl.dll文件。


#include "curl/curl.h"//注意路径,放在哪个路径下就写哪个路径
#define POSTURL "http://cert.icinfo.cn/binddataquery"  #define POSTFIELDS "data1&data2&data3"//数据之间以&连接   #pragma comment(lib, "libcurl.lib")//注意路径

接下来是post数据请求代码:

CURL *curl;  CURLcode res;   std::string fptr;struct curl_slist *http_header = NULL;  curl = curl_easy_init();  curl_easy_setopt(curl, CURLOPT_URL, POSTURL);   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTFIELDS); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); //注意回调函数curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&fptr); //传的引用curl_easy_setopt(curl, CURLOPT_POST, 1);  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);  curl_easy_setopt(curl, CURLOPT_HEADER, 1);  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);  res = curl_easy_perform(curl);  //返回错误码,见后边链接1if(res){MessageBox("conect error","提示",MB_OK);return false;}CString str  = fptr.c_str();MessageBox(str,"",MB_OK);curl_easy_cleanup(curl);  


回调函数:(格式基本一致)

size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {     /* FILE *fptr = (FILE*)userp;      fwrite(buffer, size, nmemb, fptr);    return size * nmemb;;*/std::string* str = dynamic_cast<std::string*>((std::string *)userp);      if( NULL == str || NULL == buffer )      {          return -1;      }        char* pData = (char*)buffer;  if(pData){str->append(pData, size * nmemb);  }    return nmemb; } 


遇到的问题:

1. 如果提示“没有找到zlib1.dll,因此这个应用程序未能启动”。

下载合适的zlib1.dll,下载的地址忘记了,放在system32下,如果有的话,覆盖掉以前的。


链接1:

http://blog.csdn.net/cwj649956781/article/details/8086337

链接2:

http://blog.csdn.net/wzx19840423/article/details/6587370



0 0
原创粉丝点击