gpt4 book ai didi

c - 将 HTTP 身份验证与 C 中的 libcurl 一起用于 Twitter 流

转载 作者:行者123 更新时间:2023-12-04 06:08:09 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Trying to Access Twitter Streaming API with C



我不确定我的代码做错了什么,但似乎身份验证存在问题。每次我执行代码时都没有输出。

我的目标是我想从 Twitter API 接收推文流。问题可能是别的。但我不确定。请帮忙。

这是C代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

struct string {
char *ptr;
size_t len;
};

void init_string(struct string *s) {
s->len = 0;
s->ptr = malloc(s->len+1);
if (s->ptr == NULL) {
fprintf(stderr, "malloc() failed\n");
exit(EXIT_FAILURE);
}
s->ptr[0] = '\0';
}

size_t writefunc(void *ptr, size_t size, size_t nmemb, struct string *s)
{
size_t new_len = s->len + size*nmemb;
s->ptr = realloc(s->ptr, new_len+1);
if (s->ptr == NULL) {
fprintf(stderr, "realloc() failed\n");
exit(EXIT_FAILURE);
}
memcpy(s->ptr+s->len, ptr, size*nmemb);
s->ptr[new_len] = '\0';
s->len = new_len;

return size*nmemb;
}

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

curl = curl_easy_init();
if(curl) {
struct string s;
init_string(&s);

curl_easy_setopt(curl, CURLOPT_URL, "http://stream.twitter.com/1/statuses/sample.json");
curl_easy_setopt(curl, CURLOPT_USERPWD, "neilmarion:password_here");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
res = curl_easy_perform(curl);

printf("%s\n", s.ptr);
free(s.ptr);

/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

最佳答案

  • Use ssl .
  • 您可以使用 curl_easy_strerror()获取人类可读的错误消息:
    printf("curl error %s", curl_easy_strerror(res));
  • 一段时间后,您将耗尽内存(在我的末尾,流约为 250Kb/s)。将有趣的信息保存到持久存储并丢弃其余信息。
  • 关于c - 将 HTTP 身份验证与 C 中的 libcurl 一起用于 Twitter 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102147/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com