कर्ल POST अनुरोध हेडर दिखाएं? क्या इसे करने का कोई तरीका है?


87

मैं कर्ल वेब ऑटोमेशन ऐप बना रहा हूं और अपने POST एक्शन के वांछित परिणाम नहीं मिलने के साथ कुछ समस्या हो रही है, मुझे यह पता लगाने में कुछ परेशानी हो रही है कि मैं अपने द्वारा पोस्ट किए गए पूर्ण POST अनुरोध को कैसे दिखा सकता हूं (हेडर के साथ), मैं इस पर खोज की गई है, लेकिन जो कुछ भी सामने आता है वह प्रतिक्रिया हेडर है, वास्तव में मैं ये भी चाहता हूं लेकिन यह भी अनुरोध है, जो कि मुझे Google पर मिलने वाली कोई भी पोस्ट नहीं लगती है।

मुझे पता है कि मैं कुछ इस तरह का उपयोग करके कर्ल अनुरोध का परिणाम प्रदर्शित कर सकता हूं (मुझे माफ कर दो अगर मेरा सिंटैक्स बंद है, तो मैं पहले से ही अपने वर्चुअल मशीन को अपने विचारधारा और कोड के साथ बंद कर दूं।

 $result = curl($curl_exect) ;

वैसे भी, मैं कैसे पूर्ण हेडर देखने के लिए किसी भी सलाह की सराहना करेंगे, धन्यवाद


संभावित डुप्लिकेट: stackoverflow.com/questions/866946/…

जवाबों:


83

आप स्थानांतरण के बारे में जानकारी देख कर कर सकते हैं:

curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);

अनुरोध से पहले, और

$information = curl_getinfo($curl_exect);

अनुरोध के बाद

देखें: http://www.php.net/manual/en/function.curl-getinfo.php

तुम भी उपयोग कर सकते हैं CURLOPT_HEADERमें अपनेcurl_setopt

curl_setopt($curl_exect, CURLOPT_HEADER, true);

$httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE);

return $httpcode == 200;

ये हेडर का उपयोग करने के कुछ तरीके हैं।


4
मैंने यह कोशिश की, लेकिन यह केवल POST की एक सरणी को हटा देता है, इसलिए इसके सटीक हेडर नहीं दिखा रहा है, केवल POST और बिल्कुल नहीं जैसा कि प्राप्त करने वाला सर्वर इसे देखेगा, तो यह समस्या निवारण के लिए आदर्श नहीं है
रिक

5
उत्तर पूर्ण नहीं है। अनुरोध के निष्पादित होने से पहले, आपको curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);
naitsirch

1
यह केवल वही दिखाता है जो सर्वर ने वापस भेजा है। ऐसा लगता है जैसे कर्ल_सेटॉप ($ ch, CURLOPT_VERBOSE, true); आपको यह देखने की अनुमति देगा कि आप सर्वर को क्या भेजते हैं।
स्टीवन

168

यहाँ आप की जरूरत है:

curl_setopt($curlHandle, CURLINFO_HEADER_OUT, true); // enable tracking
... // do curl request    
$headerSent = curl_getinfo($curlHandle, CURLINFO_HEADER_OUT ); // request headers

6
कोई POST डेटा कैसे दिखा सकता है? यानी जो कर्ल_सेटॉप्ट ($ ch, CURLOPT_POSTFIELDS, $ postData) द्वारा जोड़ा गया है;
डेन डैस्कलेस्कु

@DanDascalescu जब से आपने डेटा पोस्ट किया है, कर्ल अनुरोध बनाते समय, इसे वापस पकड़ने की कोई आवश्यकता नहीं है। नोट: पोस्टिंग फ़ॉर्म मान "फ़ॉर्म डेटा" के रूप में भेजे जाते हैं, हेडर नहीं, इसलिए ऊपर वाला उन्हें क्यों नहीं दिखाता है। यदि आपको वास्तव में यह देखने की आवश्यकता है कि तार पर क्या है, तो वायरशर्क का प्रयास करें।
जोसेफ वासना

10

आप कर्ल द्वारा भेजे गए सभी हेडर को एक फ़ाइल का उपयोग करके सहेज सकते हैं:

$f = fopen('request.txt', 'w');
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_STDERR ,$f);

6

आप अपने आप से हेडर का उपयोग करके अनुरोध कर सकते हैं:

// open a socket connection on port 80
$fp = fsockopen($host, 80);

// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);

$result = ''; 
while(!feof($fp)) {
    // receive the results of the request
    $result .= fgets($fp, 128);
}

// close the socket connection:
fclose($fp);

अनुरोध करने के तरीके पर लेखनी की तरह


पोस्ट के लिए धन्यवाद, मुझे लगता है कि मैं इसे पूरी तरह से कर्ल की तुलना में एक अलग पुस्तकालय के रूप में नहीं समझ रहा हूं, है ना? वहाँ सिर्फ कर्ल के साथ ऐसा करने का एक तरीका है? यदि नहीं, तो मैं इसे इस तरह से देखूंगा, इसका सिर्फ इतना है कि मैं विवादों से परिचित नहीं हूँ
रिक

यह वास्तव में php की मूल कार्यक्षमता है
SSH This

1
यह एक अच्छा जवाब है क्योंकि यह कच्चे अनुरोध के प्रकार को उजागर करता है। मुझे हमेशा cURL का उपयोग करना सिखाया गया है जो एक पुस्तकालय है जिसे कभी-कभी स्थापित करना पड़ता है और हमेशा उपलब्ध नहीं होता है।
अल्टिमस प्राइम

2

मुझे हाल ही में एक ही समस्या थी, और मैंने विंडशार्क स्थापित किया (यह एक नेटवर्क निगरानी उपकरण है)। एन्क्रिप्टेड ट्रैफ़िक (HTTPS) को छोड़कर आप इसके साथ सब कुछ देख सकते हैं।


2
वायरशर्क WinCap या किसी अन्य कैप्चरिंग सिस्टम पर चलता है, आपके पास काम करने के लिए एथेरोस आधारित चिपसेट होना चाहिए, मुझे लगता है कि क्यों न आप सिर्फ क्रोम इंस्टॉल Ctrl+Shift+Jकरें और दबाएं फिर XHRबटन और फ़ाइल नाम पर क्लिक करें और फिर हेडर और डेटा देखें।
रॉबर्टपीट

मैंने वायरशर्क की कोशिश की लेकिन यह मेरे निवर्तमान कर्ल पोस्ट ट्रैफ़िक
रिक

मैंने मान लिया कि आप एक स्थानीय सर्वर पर काम कर रहे थे, क्या यह मामला है?
greg0ire

रॉबर्ट, मैं वही करने की कोशिश कर रहा हूं जो आपने क्रोम में कहा था, लेकिन जब मैं Ctrl + Shift + 3 कर रहा हूं, तो यह कुछ नहीं कर रहा है, मैं इस बारे में जानकारी खोज रहा हूं, लेकिन कुछ प्रासंगिक, क्रोम की क्या विशेषता है, यह पता नहीं लग सकता है क्या यह एक्सेस है? साभार
रिक

ठीक है, मुझे यह क्रोम में हेडर देखने के बारे में मिला: google.com/support/forum/p/Chrome/… मुझे विश्वास है कि इसे एक्सेस करने के लिए इसके Ctrl + Shift + i
रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.