2010-07-02 7 views
71

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

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

$result = curl($curl_exect) ; 

का उल्लेख करने, मैं पूर्ण शीर्षलेखों को देखने के तरीके पर किसी भी सलाह की सराहना करेंगे, धन्यवाद

+1

** 'CURLOPT_VERBOSE' ** का उपयोग करें **। – ekillaby

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/866946/how-can-i-see-the-request-headers-made-by-curl-when-sending-a-request-to-the-ser –

उत्तर

52

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

curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true); 

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

$information = curl_getinfo($curl_exect); 
अनुरोध के बाद

दृश्य: http://www.php.net/manual/en/function.curl-getinfo.php

आप भी अपनी curl_setopt

curl_setopt($curl_exect, CURLOPT_HEADER, true); 

$httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE); 

if($httpcode == 200) { 
    return true; 
} 

return false; 

में CURLOPT_HEADER उपयोग कर सकते हैं ये सिर्फ हेडर का उपयोग के कुछ तरीके हैं।

+4

मैंने कोशिश की लेकिन यह सिर्फ POST की एक सरणी को आउटपुट करता है, इसलिए यह सटीक शीर्षलेख नहीं दिखा रहा है, केवल पोस्ट और ठीक नहीं है क्योंकि प्राप्तकर्ता सर्वर इसे देखेगा, इसलिए समस्या निवारण के लिए यह आदर्श नहीं है – Rick

+4

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

+0

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

3

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

+2

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

+0

मैंने वायरशर्क की कोशिश की लेकिन ऐसा लगता है कि यह मेरा आउटगोइंग कर्ल पोस्ट ट्रैफिक – Rick

+0

नहीं लेता है, मुझे लगता है कि आप स्थानीय सर्वर पर काम कर रहे थे, क्या यह मामला है? – greg0ire

4

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

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

तरह how make request

+0

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

+0

यह वास्तव में php –

142

यहाँ पर लिखा आप सभी की जरूरत है:

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

की मूल कार्यक्षमता है आईएमओ – marlar

+6

सबसे अच्छा जवाब कैसे पोस्ट डेटा भी दिखा सकता है? अर्थात। जो curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ postData) द्वारा जोड़ा गया है; –

+0

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

8

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

$f = fopen('request.txt', 'w'); 
curl_setopt($ch,CURLOPT_VERBOSE,true); 
curl_setopt($ch,CURLOPT_STDERR ,$f); 
संबंधित मुद्दे