#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 void startChoice() {
string buffer;
CURLcode code;
CURL* curl = NULL;
const char* url = "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());
}
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;
}
网友评论