libcurl应用:如何把下载内容写入内存
来源:互联网 发布:数据库概念模型的定义 编辑:程序博客网 时间:2024/05/21 22:45
#include <stdlib.h>
#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.h>
#include <string>
#include <iostream>
using namespace std;
static char errorBuffer[1024];
static bool init(CURL *&, const char *,string *);
static int writer(char *, size_t, size_t, string *);
int main()
{
string buffer;
CURLcode code;
CURL* curl = NULL;
const char* url = "http://www.baidu.com";
code = curl_global_init(CURL_GLOBAL_DEFAULT);
printf("code = %d\n", code);
// curl = curl_easy_init();
if(!init(curl, url, &buffer))
{
fprintf(stderr, "Connection initializion failed\n");
exit(EXIT_FAILURE);
}
code = curl_easy_perform(curl);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to get '%s' [%s]\n", url, errorBuffer);
exit(EXIT_FAILURE);
}
curl_easy_cleanup(curl);
printf("%s\n",buffer.c_str());
return 0;
}
static bool init(CURL *&curl, const char *url, string *p_buffer)
{
CURLcode code;
curl = curl_easy_init();
if (curl == NULL)
{
fprintf(stderr, "Failed to create CURL connection\n");
exit(EXIT_FAILURE);
}
code = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set error buffer [%d]\n", code);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_URL, url);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set URL [%s]\n", errorBuffer);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set writer [%s]\n", errorBuffer);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, p_buffer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set write data [%s]\n", errorBuffer);
return false;
}
return true;
}
static int writer(char *data, size_t size, size_t nmemb, string *writerData)
{
unsigned long sizes = size * nmemb;
if (writerData == NULL) return 0;
writerData->append(data, sizes);
return sizes;
}
#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.h>
#include <string>
#include <iostream>
using namespace std;
static char errorBuffer[1024];
static bool init(CURL *&, const char *,string *);
static int writer(char *, size_t, size_t, string *);
int main()
{
string buffer;
CURLcode code;
CURL* curl = NULL;
const char* url = "http://www.baidu.com";
code = curl_global_init(CURL_GLOBAL_DEFAULT);
printf("code = %d\n", code);
// curl = curl_easy_init();
if(!init(curl, url, &buffer))
{
fprintf(stderr, "Connection initializion failed\n");
exit(EXIT_FAILURE);
}
code = curl_easy_perform(curl);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to get '%s' [%s]\n", url, errorBuffer);
exit(EXIT_FAILURE);
}
curl_easy_cleanup(curl);
printf("%s\n",buffer.c_str());
return 0;
}
static bool init(CURL *&curl, const char *url, string *p_buffer)
{
CURLcode code;
curl = curl_easy_init();
if (curl == NULL)
{
fprintf(stderr, "Failed to create CURL connection\n");
exit(EXIT_FAILURE);
}
code = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set error buffer [%d]\n", code);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_URL, url);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set URL [%s]\n", errorBuffer);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set writer [%s]\n", errorBuffer);
return false;
}
code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, p_buffer);
if (code != CURLE_OK)
{
fprintf(stderr, "Failed to set write data [%s]\n", errorBuffer);
return false;
}
return true;
}
static int writer(char *data, size_t size, size_t nmemb, string *writerData)
{
unsigned long sizes = size * nmemb;
if (writerData == NULL) return 0;
writerData->append(data, sizes);
return sizes;
}
- libcurl应用 libcurl应用:如何把下载内容写入内存
- libcurl应用:如何把下载内容写入内存
- libcurl应用:如何把下载内容写入内存
- libcurl应用:如何把下载内容写入内存
- 如何把数据库的内容写入到Word文档中
- 如何把数据库的内容写入到Word文档中?
- 把内容写入硬盘文件
- 把文本内容写入文件
- 把内容写入TXT文件
- 把二进制内容写入文件
- IOS应用发布NSLog的注释及使用重定向,把控制台内容写入文件
- JAVA中如何把system.out.println里的内容写入文件
- 如何把控制台输入的内容写入到指定的文件中
- C++怎样把内容写入指定路径?
- 如何把多线程下载的数据按位置写入一个文件
- 第二天! 把文件写入ROM内存
- 请问如何把指定的内容写入到事先做好的word模板中,然后新生成一个word文件
- 如何把资源中的文件写入磁盘
- xpath+中关于+xmlns+的问题
- hdu2040
- (转)Ogre 天龙八部 GridInfo文件格式说明(正确版)
- 西蒙iphone-OpenGL ES 教程 -06
- [Build+Android+Development+Environment+Step+1]Initializing+a+Build+Environment
- libcurl应用:如何把下载内容写入内存
- C数学函数,所在函数库为math.h、stdlib.h、string.h、float.h
- HTML iframe 用法总结收藏
- 西蒙iphone-OpenGL ES 教程 -07
- 穆迪-深圳
- fork文件描述符和文件指针的区别
- WPF总结
- 西蒙iphone-OpenGL ES 教程 -08
- HDU 1013 Digital Roots