Отправить строку в запросе PUT с помощью libcurl

Мой код выглядит так:

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);
}

Что не работает, программа просто зависает навсегда.

В test.php я получаю следующие заголовки запроса:

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"
}

Но тело пустое, значит, данные json не отправляются с запросом.

То, что я хочу сделать с libcurl, на самом деле не что иное, как этот сценарий командной строки:

curl -X PUT -H "Content-Type: application/json" -d '... some json ...' 127.0.0.1/test.php
14
задан Max 27 September 2011 в 14:36
поделиться