【发布时间】:2018-04-11 11:45:37
【问题描述】:
我现在正试图从 Web REST API 获得响应,但由于以下问题(来自 libcurl 调试)而失败
在分块编码中发现格式错误的编码
struct wapi_resp_data {
char *ptr;
size_t len;
};
static size_t
write_resp_data(void *data, size_t size, size_t nmemb, void *param)
{
struct wapi_resp_data *res = (struct wapi_resp_data *) param;
res->ptr = realloc(res->ptr, res->len + size * nmemb + 1);
if (!res->ptr) {
res->len = 0;
return -1;
}
memcpy(&res->ptr[res->len], data, size * nmemb);
res->len += size * nmemb;
res->ptr[res->len] = '\0';
return size * nmemb;
}
int curl_get_response(const char *url, struct curl_slist_headers *headers)
{
...
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, post_headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, req_data);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(req_data));
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_resp_data);
memset(&res, 0, sizeof(res));
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &res);
...
}
我尝试使用 curl 命令进行测试,但它可以正常工作。
这是示例命令:
curl -d '{ "test": "test"}' -H "Content-Type: application/json"
我的代码有问题吗?
【问题讨论】: