这可能是一个愚蠢的问题,但实际上,我怎么得到返回的网站数据curl_easy_perform()到一个变量,我可以工作.当它执行时,我只是在终端上看到它全部闪烁.顺便说一句,我正在使用C.
有任何想法吗?谢谢.
编辑: 这是我正在使用的代码(我正在访问Twitter Streaming API,我甚至正确地做到了吗?)
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/filter.json?track=http");
curl_easy_setopt(curl, CURLOPT_USERPWD, "JEggers2:password");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要将数据转换为字符串,您需要设置写回调函数:
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback_func);
Run Code Online (Sandbox Code Playgroud)
此外,您的字符串变量的地址,以接收数据:
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &str)
Run Code Online (Sandbox Code Playgroud)
回调函数看起来像这样:
size_t callback_func(void *ptr, size_t size, size_t count, void *stream)
{
/* ptr - your string variable.
stream - data chuck you received */
printf("%.*s", size, (char*)stream);
}
Run Code Online (Sandbox Code Playgroud)
因为您不知道您将要接收的数据的总大小,所以您需要进行指针重新分配以将其转换为字符串.
| 归档时间: |
|
| 查看次数: |
9780 次 |
| 最近记录: |