Доступ к API потоковой передачи Twitter с помощью C - PullRequest
3 голосов
/ 19 января 2011

Я пытаюсь получить доступ к API потоковой передачи через C и использую следующий код:

#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, но, похоже, это проблема API потоковой передачи.Есть идеи?

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Функция curl_easy_perform () возвращает только код ошибки. Чтобы фактически получить данные, вам нужно установить CURLOPT_WRITEFUNCTION на вашу собственную функцию обратного вызова.

Редактировать: Вы также не можете использовать «-uJEggers2: пароль» в строке URL, вам нужно будет установить параметры аутентификации, используя CURLOPT_HTTPAUTH , CURLOPT_USERNAME и CURLOPT_PASSWORD .

0 голосов
/ 19 января 2011

edit: я думаю, что разница между использованием google.com и Twitter API в том, что в этом случае вы пытаетесь указать пароль с помощью "-u user: pass".Нигде в API CURL я не вижу упомянутой этой техники.

Вместо этого передайте пользователя и передайте его отдельно с дополнительным curl_easy_setopt (curl, CURLOPT_USERPWD, "user: pass"), как описано в разделе "ОПЦИИ ИМЕН И ПАРОЛЕЙ"на http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

...