Bonjour,
J'ai crée un serveur qui reçoit des messages d'alarme.
Mon code fonctionne correctement et je peux visualiser dans la console mon message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
if ((read_size = recv(sock , client_message , sizeof client_message - 1 , MSG_WAITALL)) < 0) 
	{
    perror("recv()");
	}
 
client_message[read_size] = '\0';
printf("taille  %d\n", read_size);
printf("message %s\n", client_message);
et voici un exemple du message recu
POST / HTTP/1.1
Content-Type: multipart/form-data; boundary=boundary
Host: 192.168.1.100
Connection: close
Content-Length: 648042

--boundary
Content-Disposition: form-data; name="alarmResult"
Content-Type: application/json
Content-Length: 3368

{
"ipAddress": "192.168.1.64",
"portNo": 8080,
"protocol": "HTTP",
"macAddress": "58:50:ed:5b:69:dc",
"channelID": 1,
"dateTime": "2020-12-13T06:59:25+08:00",
"activePostCount": 1,
"isDataRetransmission": false,
"eventState": "active",
"channelName": "Camera 01",
"eventType": "alarmResult",
"eventDescription": "alarmResult"
}
Je souhaiterai extraire les valeurs du json ex: ipAddress
J'ai donc utilisé json-c et modifié mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
	if ((read_size = recv(sock , client_message , sizeof client_message - 1 , MSG_WAITALL)) < 0)
	{
    perror("recv()");
	}
 
client_message[read_size] = '\0';
printf("taille  %d\n", read_size);
printf("message %s\n", client_message);
 
struct json_object *obj = json_tokener_parse(client_message);
struct json_object *json;
 
json_object_object_get_ex(obj, "ipAddress", &json);
printf("ipAddress : %s\n", json_object_get_string(json));
Malheureusement ipAddress me renvoie toujours NULL
Merci pour votre aide