【问题标题】:Accessing the Twitter Streaming API with libcurl and C使用 libcurl 和 C 访问 Twitter 流 API
【发布时间】:2011-01-20 21:20:16
【问题描述】:

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

【问题讨论】:

标签: c twitter curl streaming libcurl


【解决方案1】:

问题是callback_func 没有返回任何东西。

根据spec,如果读取成功应该返回size

应该匹配以下原型的函数指针: size_t function( void *ptr, size_t size, size_t nmemb, void *userdata);一旦收到需要保存的数据,libcurl 就会调用此函数。 ptr 指向的数据大小是大小乘以 nmemb,不会以零结尾。返回实际处理的字节数。如果该数量与传递给您的函数的数量不同,它将向库发出错误信号。这将中止传输并返回 CURLE_WRITE_ERROR。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 2011-12-26
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多