我有以下问题:如何编写通过 http-response 返回的数据char *
缓冲?我发现了几种方法:
- use
CURLOPT_WRITEDATA
or CURLOPT_WRITEFUNCTION
. but CURLOPT_WRITEDATA
需要文件指针(FILE *
)。用于CURLOPT_WRITEFUNCTION
在我看来,带有回调函数是个怪癖......
- use
curl_easy_send
and curl_easy_recv
。但在这种情况下我需要写所有POST
用手顶头...
还有其他更优雅的方法吗?例如经过char *
指向某个函数的缓冲区指针以获取 http 响应。
实际上 CURLOPT_WRITEDATA 和 CURLOPT_WRITEFUNCTION 可以与任何指针类型一起使用。只要您的函数与该指针类型兼容。
例如:
...
client_t *client;
CURL *conn;
...
curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, read_data);
curl_easy_setopt(conn, CURLOPT_WRITEDATA, client);
...
static size_t read_data(void *ptr,
size_t size,
size_t nmemb,
client_t *client)
{
memcpy(client->data, ptr, size * nmemb);
return size * nmemb;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)