CURL के साथ $ _POST मान पास करना


जवाबों:


167

ठीक काम करना चाहिए।

$data = array('name' => 'Ross', 'php_master' => true);

// You can POST a file by prefixing with an @ (for <input type="file"> fields)
$data['file'] = '@/home/user/world.jpg';

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
curl_close($handle)

हमारे यहां दो विकल्प हैं, CURLOPT_POSTजो HTTP POST को चालू करता है, और CURLOPT_POSTFIELDSजिसमें सबमिट करने के लिए हमारे पोस्ट डेटा की एक सरणी होती है। इसका उपयोग डेटा को POST <form>s में सबमिट करने के लिए किया जा सकता है ।


यह नोट करना महत्वपूर्ण है कि curl_setopt($handle, CURLOPT_POSTFIELDS, $data);$ डेटा को दो प्रारूपों में लिया जाता है, और यह निर्धारित करता है कि पोस्ट डेटा को कैसे एन्कोड किया जाएगा।

  1. $dataa array(): as डेटा भेजा जाएगा multipart/form-dataजो हमेशा सर्वर द्वारा स्वीकार नहीं किया जाता है।

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
  2. $dataurl एन्कोडेड स्ट्रिंग के रूप में: डेटा को application/x-www-form-urlencodedउसी रूप में भेजा जाएगा , जो सबमिट किए गए HTML फॉर्म डेटा के लिए डिफ़ॉल्ट एन्कोडिंग है।

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));

मुझे उम्मीद है कि इससे दूसरों को अपना समय बचाने में मदद मिलेगी।

देख:


आपके नोट ने मुझे कम से कम एक घंटे की डिबगिंग से बचाया। धन्यवाद।
विवेक कुमार

30

रॉस के पास एक यूआरएल के लिए सामान्य पैरामीटर / मूल्य प्रारूप को पोस्ट करने का सही विचार है

मैं हाल ही में एक ऐसी स्थिति में भाग गया, जहां मुझे कुछ XML को सामग्री-प्रकार के "टेक्स्ट / xml" के रूप में पोस्ट करने की आवश्यकता थी, बिना किसी पैरामीटर जोड़े के, इसलिए आप यहाँ कैसे हैं:

$xml = '<?xml version="1.0"?><stuff><child>foo</child><child>bar</child></stuff>';
$httpRequest = curl_init();

curl_setopt($httpRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($httpRequest, CURLOPT_HTTPHEADER, array("Content-Type:  text/xml"));
curl_setopt($httpRequest, CURLOPT_POST, 1);
curl_setopt($httpRequest, CURLOPT_HEADER, 1);

curl_setopt($httpRequest, CURLOPT_URL, $url);
curl_setopt($httpRequest, CURLOPT_POSTFIELDS, $xml);

$returnHeader = curl_exec($httpRequest);
curl_close($httpRequest);

मेरे मामले में, मुझे HTTP प्रतिक्रिया शीर्षलेख में से कुछ मानों को पार्स करने की आवश्यकता है ताकि आपको आवश्यक रूप से सेट CURLOPT_RETURNTRANSFERया करने की आवश्यकता न हो CURLOPT_HEADER


1
यह वह नहीं है जो पोस्टर पूछ रहा है, लेकिन यह सिर्फ वही होता है जो मैं देख रहा था, धन्यवाद!
21

मुझे खुशी है कि किसी और ने इसे मददगार पाया।
मार्क बीसेक

1
आपका "कर्ल_सेटॉप ($ httpRequest, CURLOPT_HTTPHEADER, सरणी (" सामग्री-प्रकार: पाठ / xml "));" कुछ घंटे जो मुझे पहले ही हल कर चुके थे! बहुत बहुत धन्यवाद :)
अलेक्सई तेनित्स्की

हाय मार्क, अगर आपके पास समय है, तो क्या आप कृपया मेरी मदद कर सकते हैं? .. कृपया। यहाँ क्लिक करें
jayAnn

हमारा पता लगाने की कोशिश कर रहे हैं कि मेरे xml डेटा को urlencoded के रूप में भेजे जाने पर स्वीकार क्यों नहीं किया गया। सामग्री-प्रकार और कोई urlencode ने मुझे नहीं बचाया। धन्यवाद।
शमूएल

3
$query_string = "";

if ($_POST) {
    $kv = array();
    foreach ($_POST as $key => $value) {
        $kv[] = stripslashes($key) . "=" . stripslashes($value);
    }
    $query_string = join("&", $kv);
}

if (!function_exists('curl_init')){
    die('Sorry cURL is not installed!');
}

$url = 'https://www.abcd.com/servlet/';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($kv));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);

curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$result = curl_exec($ch);

curl_close($ch);

3

CURL का उपयोग करने का एक और सरल PHP उदाहरण:

<?php
    $ch = curl_init();                    // Initiate cURL
    $url = "http://www.somesite.com/curl_example.php"; // Where you want to post data
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POST, true);  // Tell cURL you want to post something
    curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to post
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return the output in string format
    $output = curl_exec ($ch); // Execute

    curl_close ($ch); // Close cURL handle

    var_dump($output); // Show output
?>

यहाँ पाया गया उदाहरण: http://devzone.co.in/post-data-use-curl-in-php-a-simple-example/

उपयोग करने के बजाय curl_setoptआप उपयोग कर सकते हैं curl_setopt_array

http://php.net/manual/en/function.curl-setopt-array.php


धन्यवाद!! - आपके कोड curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to postने मुझे वही प्रदान किया जो मैं ढूंढ रहा था :)
asugrue15

2

की जाँच करें यह पेज जो इसे कैसे करना का एक उदाहरण है।


2
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
नन्ने


1
$url='Your url'; // Specify your url
$data= array('parameterkey1'=>value,'parameterkey2'=>value); // Add parameters in key value
$ch = curl_init(); // Initialize cURL
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

1
क्या आप इस उत्तर पर विस्तार कर सकते हैं? कोड की कुछ पंक्तियाँ उत्तर नहीं बनाती हैं।
रिच बेनर

1) अपने url को निर्दिष्ट करें 2) मापदंडों की सरणी बनाएं 3) कर्ल के प्रारंभिक 4) कर्ल के आवश्यक विकल्प 5 सेट करें) Execute Curl 6) Close Curl
Aniket B

0
<?php
    function executeCurl($arrOptions) {

        $mixCH = curl_init();

        foreach ($arrOptions as $strCurlOpt => $mixCurlOptValue) {
            curl_setopt($mixCH, $strCurlOpt, $mixCurlOptValue);
        }

        $mixResponse = curl_exec($mixCH);
        curl_close($mixCH);
        return $mixResponse;
    }

    // If any HTTP authentication is needed.
    $username = 'http-auth-username';
    $password = 'http-auth-password';

    $requestType = 'POST'; // This can be PUT or POST

    // This is a sample array. You can use $arrPostData = $_POST
    $arrPostData = array(
        'key1'  => 'value-1-for-k1y-1',
        'key2'  => 'value-2-for-key-2',
        'key3'  => array(
                'key31'   => 'value-for-key-3-1',
                'key32'   => array(
                    'key321' => 'value-for-key321'
                )
        ),
        'key4'  => array(
            'key'   => 'value'
        )
    );

    // You can set your post data
    $postData = http_build_query($arrPostData); // Raw PHP array

    $postData = json_encode($arrPostData); // Only USE this when request JSON data.

    $mixResponse = executeCurl(array(
        CURLOPT_URL => 'http://whatever-your-request-url.com/xyz/yii',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPGET => true,
        CURLOPT_VERBOSE => true,
        CURLOPT_AUTOREFERER => true,
        CURLOPT_CUSTOMREQUEST => $requestType,
        CURLOPT_POSTFIELDS  => $postData,
        CURLOPT_HTTPHEADER  => array(
            "X-HTTP-Method-Override: " . $requestType,
            'Content-Type: application/json', // Only USE this when requesting JSON data
        ),

        // If HTTP authentication is required, use the below lines.
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
        CURLOPT_USERPWD  => $username. ':' . $password
    ));

    // $mixResponse contains your server response.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.