使用libcurl和C访问Twitter Streaming API

时间:2011-01-20 21:20:17

标签: c twitter curl streaming libcurl

我正在尝试用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格式输出一条推文。我究竟做错了什么?感谢

1 个答案:

答案 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。