Envoyer une chaîne dans une requête PUT avec libcurl

Mon code ressemble à ceci:

curl = curl_easy_init();

if (curl) {
    headers = curl_slist_append(headers, client_id_header);
    headers = curl_slist_append(headers, "Content-Type: application/json");

    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
    curl_easy_setopt(curl, CURLOPT_URL, "127.0.0.1/test.php");  
    curl_easy_setopt(curl, CURLOPT_PUT, 1L);

    res = curl_easy_perform(curl);
    res = curl_easy_send(curl, json_struct, strlen(json_struct), &io_len);

    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);
}

Qui ne marche pas, le programme se bloque toujours.

Dans test.php ce sont les en-têtes de requête-je obtenir:

array(6) {
  ["Host"]=>
  string(9) "127.0.0.1"
  ["Accept"]=>
  string(3) "*/*"
  ["Transfer-Encoding"]=>
  string(7) "chunked"
  ["X-ClientId"]=>
  string(36) "php_..."
  ["Content-Type"]=>
  string(16) "application/json"
  ["Expect"]=>
  string(12) "100-continue"
}

Mais le corps est vide, les moyens, peu de données json est envoyé avec la demande.

Ce que je veux faire avec libcurl est en fait rien d'autre alors ces script de ligne de commande:

curl -X PUT -H "Content-Type: application/json" -d '... some json ...' 127.0.0.1/test.php

source d'informationauteur Max