我正在尝试用C编写一个程序,它将从流API中获取每条推文并将其存储在数据库中。但是,我无法让它工作,我使用下面的代码:
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>
size_t callback_func(void *ptr, size_t size, size_t count, void *stream) {
/* ptr - your string variable.
stream - data chuck you received */
printf("res %s \n \n", (char*)ptr); //prints chunck of data for each call.
}
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://google.com/");
//curl_easy_setopt(curl, CURLOPT_USERPWD, "JEggers2:password");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback_func);
curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
此代码仅以JSON格式输出一条推文。我究竟做错了什么?感谢
答案 0 :(得分:1)
问题是callback_func
没有返回任何内容。
根据spec,如果读取成功,则应返回size
。
应与以下原型匹配的函数指针:size_t function(void * ptr,size_t size,size_t nmemb,void * userdata);一旦收到需要保存的数据,libcurl就会调用此函数。 ptr指向的数据大小是大小乘以nmemb,它不会被零终止。返回实际处理的字节数。如果该金额与传递给您的函数的金额不同,它将向库发出错误信号。这将中止传输并返回CURLE_WRITE_ERROR。