libcurl中文手册,libcurl.lib

  libcurl中文手册,libcurl.lib

  网络库使用心得-浪迹天涯-丙博客

  网络库使用心得网络库为一个免费开源的,客户端全球资源定位器(统一资源定位器)传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,地鼠,远程登录,字典,文件和LDAP,跨平台,支持Windows、Unix、Linux等,线程安全,支持Ipv6。并且易于使用。

  http://curl.haxx.se/libcurl/

  从http://curl.haxx.se/libcurl/下载一个稳定的版本,注意选择操作系统。

  在使用之前请大家多阅读网络库的文档:因为如果要实际运用到项目中,最好对网络库有具体的了解,具体在

  http://curl.haxx.se/libcurl/c/

  curl_easy_setopt()

  curl_easy_perform()

  curl_easy_getinfo()

  这三个函数的使用上,需要多去钻研,多看样品,你才能灵活使用libcurl。

  感谢这篇文章:

  http://博客。163 .com/Xu _ Chao 2000/blog/static/27770610200801303252802/

  给了我许多启发,再次感谢!

  给出我的一个简单的代码例子:

  说明:

  1.关键在卷曲_简易_设置函数设置选项,可以设置ftp,http,get,post等许多选项,请根据具体使用情况设置。

  2.对取回来的数据需要进行判断,比如超文本传送协议(超文本传输协议的缩写)下载文件,如果文件不存在,需要进行处理。因为作者是可以将布法罗填充404未找到等网页内容的,不能将这个内容当成文件内容,所以需要判断服务返回来的代码,进行判断。

  3.我有个问题,就是想得到服务器上文件名的具体名称,详细调试已经返回了,但是我在简介的时候,试过好多选项,但未找到这个存放真实服务器文件名的选项,如果有知道的麻烦告诉我,谢谢了!

  #包含" curl/curl.h "

  #pragmacomment(lib, libcurl.lib )

  long writer(void *data,int size,int nmemb,string content);

  bool CurlInit(CURL* curl,const char* url,string content);

  bool GetURLDataBycurl(const char * URL,字符串内容);

  voidmain()

  {

  char * URL= http://www。百度一下。com/img/百度。gif ;

  字符串内容;

  if(GetURLDataBycurl(url,content))

  {

  printf(%sn ,内容);

  }

  getchar();

  }

  bool CurlInit(CURL* curl,const char* url,字符串内容)

  {

  CURLcodecode

  字符串错误;

  curl=curl_easy_init()。

  if(curl==NULL)

  {

  printf( FailedtocreateCURLconnection n );

  返回错误的

  }

  code=curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,error);

  如果(代码!=CURLE_OK)

  {

  printf( failedtoseterrobuffer[% d] n ,代码);

  返回错误的

  }

  curl_easy_setopt(curl,CURLOPT_VERBOSE,1L);

  code=curl_easy_setopt(curl,CURLOPT_URL,URL);

  如果(代码!=CURLE_OK)

  {

  printf(FailedtosetURL[%s]n ,错误);

  返回错误的

  }

  code=curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1);

  如果(代码!=CURLE_OK)

  {

  printf( Failedtosetredirectoption[% s] n ,错误);

  返回错误的

  }

  code=curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,writer);

  如果(代码!=CURLE_OK)

  {

  printf( Failedtosetwriter[% s] n ,错误);

  返回错误的

  }

  code=curl_easy_setopt(curl,CURLOPT_WRITEDATA,content);

  如果(代码!=CURLE_OK)

  {

  printf( Failedtosetwritedata[% s] n ,错误);

  返回错误的

  }

  返回真实的

  }

  长编写器(void *data,int size,int nmemb,string content)

  {

  长尺寸=大小* nmemb

  字符串温度(数据,大小);

  内容=温度

  returnsizes

  }

  bool GetURLDataBycurl(const char * URL,字符串内容)

  {

  卷曲*卷曲=空

  CURLcodecode

  字符串错误;

  代码=CURL _ GLOBAL _ init(CURL _ GLOBAL _ DEFAULT);

  如果(代码!=CURLE_OK)

  {

  printf( Failedtoglobalinitdefault[% d] n ,代码);

  返回错误的

  }

  如果(!CurlInit(curl,url,内容))

  {

  printf( Failedtoglobalinitdefault[% d] n );

  returnPM _ FALSE

  }

  code=curl _ easy _ perform(curl);

  如果(代码!=CURLE_OK)

  {

  printf(Failedtoget%s[%s]n ,URL,错误);

  返回错误的

  }

  长retcode=0;

  code=curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,ret CODE);

  if((code==CURLE _ OK)retcode==200)

  {

  double length=0;

  code=curl_easy_getinfo(curl,curl info _ CONTENT _ LENGTH _ DOWNLOAD,LENGTH);

  printf(%d ,retcode);

  FILE*file=fopen(1.gif , WB );

  fseek(file,0,SEEK _ SET);

  fwrite(content.c_str(),1,length,file);

  fclose(文件);

  //struct curl _ slist * list;

  //code=curl_easy_getinfo(curl,CURLINFO_COOKIELIST,list);

  //curl _ slist _ free _ all(list);

  返回真实的

  }

  其他

  {

  //debug1(%sn ,getStatusCode(retcode));

  返回错误的

  }

  curl _ easy _ clean up(卷曲);

  返回错误的

  }

libcurl中文手册,libcurl.lib