У меня проблема при попытке отправить JSON объект, который я создал в C. Сервер способен как отправлять, так и получать данные просто отлично. Я довольно любитель, когда дело доходит до C.
static int main_curl(neardal_record* pRecord)
{
CURL *curl;
CURLcode res;
char * record = pRecord->representation;
json_object *jobj = json_object_new_object();
json_object *jstring = json_object_new_string(record);
json_object_object_add(jobj,"id", jstring);
curl = curl_easy_init();
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "charset: utf-8");
curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.43.20:5000/api/swipes");
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jobj);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcrp/0.1");
printf ("The json object created:%s ",json_object_to_json_string(jobj));
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_global_cleanup();
return res;
}
При распечатке объекта JSON я получаю это -> The json object created:{ "id": "hello, world" }
Ответ сервера следующий
<code> <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>SyntaxError: Unexpected token in JSON at position 0<br> at JSON.parse
(<anonymous>)<br> at createStrictSyntaxError
(/Users/backend/node_modules/body-parser/lib/types/json.js:158:10)<br>
at parse (/Users/backend/node_modules/body-
parser/lib/types/json.js:83:15)<br> at
/Users/backend/node_modules/body-parser/lib/read.js:121:18<br>
at invokeCallback (/Users/backend/node_modules/raw-
body/index.js:224:16)<br> at done
(/Users/backend/node_modules/raw-body/index.js:213:7)<br>
at IncomingMessage.onEnd (/Users/backend/node_modules/raw-
body/index.js:273:7)<br> at IncomingMessage.emit (events.js:333:22)<br>
at endReadableNT (_stream_readable.js:1201:12)<br> at
processTicksAndRejections (internal/process/task_queues.js:84:21)
При перехвате запроса с Wireshark сообщение выглядит так POST запрос И ошибка ответа такова BAD REQUEST 400
Я почти уверен, что ошибка заключается в том, как я строю свой JSON объект, но, как уже упоминалось, я очень новичок в C. Если я жестко закодирую текст вместо объекта, запрос будет успешным. Любая помощь приветствуется. Спасибо!