सर्वर पर अनुरोध भेजते समय मैं curl द्वारा किए गए अनुरोध शीर्षलेख कैसे देख सकता हूं?




(9)

जब मैं सर्वर से अनुरोध भेज रहा हूं तो मैं curl द्वारा किए गए अनुरोध शीर्षलेख देखना चाहता हूं। मैं इसे कैसे देख सकता हूं?


curl --trace-ascii {filename} या stdout पर भेजने के लिए फ़ाइल नाम के बजाय एकल डैश का उपयोग करें:

curl --trace-ascii - {URL}

यदि आप libcurl का उपयोग कर रहे हैं तो CURLOPT_DEBUGFUNCTION

यह आपको दिखाता है कि कुछ अतिरिक्त जानकारी फेंक दी गई है, जिसमें कुछ अतिरिक्त जानकारी फेंक दी गई है।


आप इसे -iv का उपयोग करके देख सकते हैं

$> curl  -ivH "apikey:ad9ff3d36888957" --form  "[email protected]/home/mar/workspace/images/8.jpg" --form "language=eng" --form "isOverlayRequired=true" https://api.ocr.space/Parse/Image

कुकीज के साथ पोस्ट प्रश्न बनाने के लिए PHP में मेरा http क्लाइंट यहां है:

function http_login_client($url, $params = "", $cookies_send = "" ){

    // Vars
    $cookies = array();
    $headers = getallheaders();

    // Perform a http post request to $ur1 using $params
    $ch = curl_init($url);
    $options = array(   CURLOPT_POST => 1,
                        CURLINFO_HEADER_OUT => true,
                        CURLOPT_POSTFIELDS => $params,
                        CURLOPT_RETURNTRANSFER => 1,
                        CURLOPT_HEADER => 1,
                        CURLOPT_COOKIE => $cookies_send,
                        CURLOPT_USERAGENT => $headers['User-Agent']
                    );

    curl_setopt_array($ch, $options);

    $response = curl_exec($ch);

/// DEBUG जानकारी $ प्रतिक्रिया गूंज; var_dump (curl_getinfo ($ ch)); ///

    // Parse response and read cookies
    preg_match_all('/^Set-Cookie: (.*?)=(.*?);/m', $response, $matches);

    // Build an array with cookies
    foreach( $matches[1] as $index => $cookie )
        $cookies[$cookie] = $matches[2][$index];

    return $cookies;
} // end http_login_client

प्रश्न निर्दिष्ट नहीं किया गया था कि curl नाम कमांड लाइन कमांड का मतलब था या संपूर्ण कर्ल लाइब्रेरी।

कर्ल लाइब्रेरी का उपयोग करते हुए निम्न PHP कोड HTTP पैरामीटर (उदाहरण के लिए "जीईटी", "पोस्ट", "विकल्प") और यूआरएल के रूप में दूसरा पैरामीटर के रूप में पहले पैरामीटर का उपयोग करता है।

<?php
$ch = curl_init();
$f = tmpfile(); # will be automatically removed after fclose()
curl_setopt_array($ch, array(
    CURLOPT_CUSTOMREQUEST  => $argv[1],
    CURLOPT_URL            => $argv[2], 
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FOLLOWLOCATION => 0,
    CURLOPT_VERBOSE        => 1,
    CURLOPT_HEADER         => 0,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_STDERR         => $f,
));
$response = curl_exec($ch);
fseek($f, 0);
echo fread($f, 32*1024); # output up to 32 KB cURL verbose log
fclose($f);
curl_close($ch);
echo $response;

उदाहरण का उपयोग:

php curl-test.php OPTIONS https://google.com

ध्यान दें कि परिणाम कमांड लाइन का पालन करने के लगभग समान हैं

curl -v -s -o - -X OPTIONS https://google.com

मुझे लगता है कि curl -v सबसे आसान है। यह एक फ़ाइल में लिखने के बिना अनुरोध शीर्षलेख ('>' के साथ prefixed लाइनों) थूक जाएगा:

$ curl -v -I -H "Testing: Test header so you see this works" http://.com/
* About to connect() to .com port 80 (#0)
*   Trying 69.59.196.211... connected
* Connected to .com (69.59.196.211) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/0.9.8h zlib/1.2.3 libssh2/0.15-CVS
> Host: .com
> Accept: */*
> Testing: Test header so you see this works
>
< HTTP/1.0 200 OK
...

मेरे आउटगोइंग हेडर (PHP के साथ कर्ल) देखने में एकमात्र तरीका निम्न विकल्पों का उपयोग कर रहा था:

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

अपनी डीबग जानकारी प्राप्त करना:

$data = curl_exec($ch);
var_dump($data);
var_dump(curl_getinfo($ch));

शीर्षकों को एक फ़ाइल में डंप करें और एक अलग फ़ाइल में प्रतिक्रिया का पेलोड करें

curl -k -v -u user:pass  "url" --trace-ascii headers.txt >> response.txt

curl करने के लिए --trace-ascii विकल्प अनुरोध हेडर, साथ ही प्रतिक्रिया शीर्षलेख और प्रतिक्रिया निकाय दिखाएगा।

उदाहरण के लिए, आदेश

curl --trace-ascii curl.trace http://www.google.com/ 

एक फ़ाइल curl.trace उत्पन्न करता है जो निम्नानुसार शुरू होता है:

== Info: About to connect() to www.google.com port 80 (#0)
== Info:   Trying 209.85.229.104... == Info: connected
== Info: Connected to www.google.com (209.85.229.104) port 80 (#0)
=> Send header, 145 bytes (0x91)
0000: GET / HTTP/1.1
0010: User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3
0050:  OpenSSL/0.9.7l zlib/1.2.3
006c: Host: www.google.com
0082: Accept: */*
008f: 

इसे एक प्रतिक्रिया मिली (एक 302 प्रतिक्रिया, सटीक लेकिन अप्रासंगिक होने के लिए) जो लॉग थी।

यदि आप केवल प्रतिक्रिया शीर्षलेखों को सहेजना चाहते हैं, तो - --dump-header विकल्प का उपयोग करें:

curl -D file url
curl --dump-header file url

यदि आपको उपलब्ध विकल्पों के बारे में अधिक जानकारी चाहिए, तो curl --help | less उपयोग करें curl --help | less (यह आउटपुट की कुछ सौ लाइनें उत्पन्न करता है लेकिन कई विकल्पों का उल्लेख करता है)। या मैन्युअल पृष्ठ ढूंढें जहां विकल्प का क्या अर्थ है, इसकी अधिक व्याख्या है।


curl -s -v -o/dev/null -H "Testheader: test" http://www.example.com

यदि आप एक हेड अनुरोध भेजना चाहते हैं और जीईटी अनुरोध नहीं चाहते हैं तो आप -I विकल्प भी उपयोग कर सकते हैं।






curl