Libcurl: в фрагментированном кодировании обнаружена неверная кодировка

Сейчас я пытаюсь получить ответ от Web REST API, но это не удалось из-за следующей проблемы (из-за отладки libcurl)

Malformed encoding found in chunked-encoding

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"

http://xxx/api/ -v

Есть ли проблема в моем коде?

0
0
537
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это проблема с полученным потоком с фрагментированным кодированием HTTP, полученным от сервера.

Если вы используете очень старый завиток, это может произойти из-за того, что curl был строже до curl 7.35.0, но с тех пор он пытается быть более расслабленным, если понимает, что будет дальше.

Я использую curl версии 7.52.1, и API хорошо работает с двоичным файлом curl.

cdevman 11.04.2018 18:02

Другие вопросы по теме