京a22222,22222

#include "http.h" static size_t getfile_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int nsize = size * nmemb; FILE *fp = (FILE*) stream; fwrite( ptr, size, nmemb, fp ); return nsize; } static size_t geturl_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int nsize = size * nmemb; std::string *strdata = (std::string*) stream; if (strdata) { strdata->append( (const char*)ptr, nsize ); } return nsize; } //extern "C" _declspec(dllexport) bool GetUrl( const char *url, const char *savepath ) //{ // // CURL *curl; // CURLcode res; // FILE *fp; // BOOL bRet; // // curl = curl_easy_init(); // // fp = fopen( savepath, "ab" ); // // if ( curl ) { // curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L ); // curl_easy_setopt( curl, CURLOPT_URL, url ); // curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback); // curl_easy_setopt( curl, CURLOPT_WRITEDATA, fp ); // // // // res = curl_easy_perform( curl ); // curl_easy_cleanup( curl ); // // if (res == CURLE_OK) // { // bRet = true; // } // else // { // remove( savepath ); // bRet = false; // } // } // if ( fp ) // fclose(fp); // // return bRet; //} extern "C" _declspec(dllexport) bool GetFile( const char *url, const char *cookie, const char *savepath ) { CURL *curl; CURLcode res; FILE *fp; bool bRet; bRet = false; curl = curl_easy_init(); fp = fopen( savepath, "ab" ); if ( curl ) { curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L ); curl_easy_setopt( curl, CURLOPT_URL, url ); //写入Cookie curl_easy_setopt( curl, CURLOPT_COOKIE, cookie ); //返回HTTP协议头 curl_easy_setopt( curl, CURLOPT_HEADER, 1 ); //接收数据的回调函数 curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, getfile_callback); curl_easy_setopt( curl, CURLOPT_WRITEDATA, fp ); res = curl_easy_perform( curl ); curl_easy_cleanup( curl ); if (res == CURLE_OK) { bRet = true; } else { remove( savepath ); bRet = false; } } if ( fp ) fclose(fp); if ( bRet ) return true; else return false; } extern "C" _declspec(dllexport) bool GetUrl( const char *url, const char *cookie, char *source, int nsrc ) { CURL *curl; CURLcode res; std::string strdata; bool bRet; bRet = false; curl = curl_easy_init(); if ( curl ) { curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L ); curl_easy_setopt( curl, CURLOPT_URL, url ); //写入Cookie curl_easy_setopt( curl, CURLOPT_COOKIE, cookie ); //返回HTTP协议头 curl_easy_setopt( curl, CURLOPT_HEADER, 1 ); //接收数据的回调函数 curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, geturl_callback); curl_easy_setopt( curl, CURLOPT_WRITEDATA, (void*)&strdata ); //strncpy( source, "", 0 ); res = curl_easy_perform( curl ); curl_easy_cleanup( curl ); if ( ( res == CURLE_OK ) && ( strdata.size() <= nsrc ) ) { strncpy( source, strdata.c_str(), strdata.size() ); bRet = true; } else { bRet = false; } } if ( bRet ) return true; else return false; }
Tags:  xb22222 22222e 22222轴承 京a22222

延伸阅读

最新评论

发表评论