2011-01-20 11 views
2

스트리밍 API에서 각 트윗을 가져 와서 데이터베이스에 저장하는 프로그램을 C로 작성하려고합니다. 그러나 작동하지 않을 수 있습니다. 아래 코드를 사용하고 있습니다.libcurl 및 C로 Twitter Streaming 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 형식으로 출력합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 덕분에

+0

가능한 복제본 [Twitter Streaming API에 C 액세스] (http://stackoverflow.com/questions/4738002/accessing-the-twitter-streaming-api-with-c) – nmichaels

답변

1

문제는 callback_func은 아무 것도 반환하지 않는다는 것입니다.

spec에 따르면 성공적으로 읽으면 size을 반환해야합니다.

다음 프로토 타입과 일치해야하는 함수 포인터 : size_t function (void * ptr, size_t size, size_t nmemb, void * userdata); 이 함수는 수신해야하는 데이터가 저장되는 즉시 libcurl에 의해 호출됩니다. ptr이 가리키는 데이터의 크기는 nmemb로 곱 해져서 0으로 끝나지 않습니다. 실제로 처리 된 바이트 수를 반환합니다. 해당 금액이 함수에 전달 된 금액과 다른 경우 라이브러리에 오류를 알립니다. 전송을 중단하고 CURLE_WRITE_ERROR를 반환합니다.

관련 문제