मेरे कोड इस तरह दिखता है के साथ 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
बिल्कुल सही! और यदि आप सर्वर से उत्तर को रोकना/दबाना चाहते हैं तो आपको डेटा प्राप्त करने के लिए 'CURLOPT_WRITEFUNCTION' सेट करना होगा या' CURLOPT_WRITEDATA' को एक अलग 'FILE * 'हैंडल पर सेट करना होगा। – karlphillip
क्यों नहीं [CURLOPT_CUSTOMREQUEST' के बजाय 'CURLOPT_UPLOAD' का उपयोग करें, जैसे कि [प्रलेखन] (http://curl.haxx.se/libcurl/c/CURLOPT_PUT.html) कहता है? –
मुझे 'curl_easy_setopt (curl, CURLOPT_CUSTOMREQUEST, NULL) करना था;' 'curl_easy_perform (कर्ल) के बाद;' अगले अनुरोधों को भी पुट अनुरोधों को रोकने के लिए। –