2010-05-11 13 views
9

मैं (एक खोल में) curl_easy_perform उत्पादन कैसे छिपा कर सकते हैं?
यह एक सी आवेदन के संबंध में है।छिपाने curl_easy_perform

+0

क्या आप छुपाना क्या मतलब है? – hhafez

+0

Curl_easy_perform अनुरोध के जवाब में लौटाई गई पृष्ठ सामग्री प्रिंट करता है (मेरे मामले में पोस्ट अनुरोध)। मैं उस पृष्ठ की सामग्री को "छिपाना" चाहता हूं (कोई दृश्य नहीं) और अपना व्यक्तिगत संदेश प्रिंट करें – stdio

उत्तर

10

सेट CURLOPT_WRITEFUNCTION और/या CURLOPT_WRITEDATA विकल्प:

FILE *f = fopen("target.txt", "wb"); 
curl_easy_setopt(handle, CURLOPT_WRITEDATA, f); 

डिफ़ॉल्ट रूप से, libcurl stdout के उत्पादन लिखता है। जब आप इसे ओवरराइड करते हैं (जो लगभग कोई भी एप्लीकेशन करेगा), यह किसी अन्य फ़ाइल को लिख देगा या कॉलबैक पर आउटपुट के टुकड़े पास करेगा। अधिक जानकारी के लिए CURLOPT_WRITEFUNCTION के लिए प्रलेखन देखें।

+0

धन्यवाद, लेकिन मुझे यह पता है। उत्पादन को "विचलित" करने के बिना कोई रास्ता नहीं है (इसे हटाने का एक तरीका)? – stdio

+1

@stdio - अगर आप इनपुट को दूर जाना चाहते हैं, तो एक नल डिवाइस खोलें और वहां सबकुछ प्रिंट करें। –

+2

@ टीएम पोस्ट: क्या आपका मतलब है/dev/null? यदि आपका मतलब यह है, तो कोड बहु-प्रारूप नहीं होगा। – stdio

6

Joey said के रूप में, आप पूरी तरह से CURLOPT_WRITEFUNCTION सभी उत्पादन उपेक्षा लिए अनुमति देगा। बस एक कॉलबैक स्थापित करें जो पूरी तरह से कुछ भी नहीं करता है अगर आप किसी भी फ़ाइल डिस्क्रिप्टर को लिखे बिना डेटा को दूर जाना चाहते हैं।

उदाहरण के लिए

,

/* Never writes anything, just returns the size presented */ 
size_t my_dummy_write(char *ptr, size_t size, size_t nmemb, void *userdata) 
{ 
    return size * nmemb; 
} 

तो अपने विकल्पों में:

curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &my_dummy_write); 

या एक शून्य डिवाइस पर, बिंदु फ़ाइल हैंडल (बहुत आसान)। curl_easy_setopt में

20

CURLOPT_NOBODY उपयोग()। उदाहरण:

... 

CURL *curl; 
CURLcode statusCode; 

curl = curl_easy_init(); 
if(curl){ 
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/"); 
    //CURLOPT_NOBODY does the trick 
    curl_easy_setopt(curl, CURLOPT_NOBODY, 1); 
    curl_easy_perform(curl); 

... 

डॉक्स के लिए लिंक: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY

+0

मैं एक पेज https में लॉग इन करना चाहता था: // उपयोगकर्ता: [email protected]/login/ और फिर कर्ल का उपयोग https://www.example.com/upload/ पर पोस्ट करने लेकिन CURLOPT_NOBODY साथ मैं सत्र खोना -id। मैंने इसे –

+0

पर लिखकर हल किया है क्या मुझे लगता है कि यह POST अनुरोधों के लिए उपयोगी है, लेकिन शायद ऐसा नहीं है? POST अनुरोधों के लिए – xtofl

+0

, यह केवल शरीर को नहीं भेजता है, जिसका अर्थ यह नहीं है कि आप क्या उम्मीद करेंगे। – xtofl

संबंधित मुद्दे