使用C语言访问Twitter流API

3

我正在尝试使用C语言访问流式API,并使用以下代码:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://stream.twitter.com/1/statuses/sample.json?delimited=length -uJEggers2:password");
    res = curl_easy_perform(curl);
    printf("results: %c", res);
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;
}

执行时没有打印任何内容,我做错了什么?谢谢。 编辑:当我使用google.com作为URL时,代码可以工作,但似乎只是Streaming API的问题。有什么想法吗?


没有使用CURLOPT_HTTPAUTH,这个能正常工作吗? - neilmarion
2个回答

3

这不可能是正确的,当我使用google.com而不是Streaming API网址时,源代码被打印出来了。有什么想法吗? - user179169
如果您没有指定自己的WRITEFUNCTION,Curl可能会将输出写入stdout。请参阅https://dev59.com/K3E95IYBdhLWcg3wY9D6以获取示例代码。 - Flavio
请参见我的编辑关于用户认证的内容,这可能是您没有看到任何输出的原因。如果要使用输出进行工作,则仍需要使用writefunction,否则它只是libcurl将输出打印到stdout。 - Flavio
能否请您在此展示一下您是如何解决这个问题的。我不知道该如何设置 CURLOPT_HTTPAUTH 以使用 C 与 Twitter 流媒体。谢谢! - neilmarion

0

编辑:我认为使用google.com和Twitter API之间的区别在于,这种情况下您试图使用“-u user:pass”指定密码。在CURL API中,我没有看到此技术的提及。

相反,根据“NAMES and PASSWORDS OPTIONS”部分的描述,在另外添加curl_easy_setopt(curl,CURLOPT_USERPWD, “user:pass”)的情况下单独传递用户和密码,详情请参阅http://curl.haxx.se/libcurl/c/curl_easy_setopt.html


代码在我使用google.com作为地址时可以工作,它会打印源代码。这只是流媒体API的问题。有什么想法吗? - user179169
你在问题中说没有打印任何东西。你的意思是除了“结果:__”以外什么都没有打印吗? - gravitron
查看以下有关编程的内容,将其从英语翻译为中文:请参见编辑有关用户身份验证的内容,与Flavio得出的结论相同。 - gravitron
1
很高兴它能够正常工作。请考虑给予点赞并选择一个答案,这将支持回答您后续问题的人。 - gravitron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接