PHP में cURL का उपयोग करके RAW POST


126

मैं cURL का उपयोग करके PHP में RAW POST कैसे कर सकता हूँ?

कच्चे पोस्ट के रूप में किसी भी एन्कोडिंग के बिना, और मेरा डेटा एक स्ट्रिंग में संग्रहीत है। डेटा को इस तरह प्रारूपित किया जाना चाहिए:

... usual HTTP header ...
Content-Length: 1039
Content-Type: text/plain

89c5fdataasdhf kajshfd akjshfksa hfdkjsa falkjshfsa
ajshd fkjsahfd lkjsahflksahfdlkashfhsadkjfsalhfd
ajshdfhsafiahfiuwhflsf this is just data from a string
more data kjahfdhsakjfhsalkjfdhalksfd

एक विकल्प मैन्युअल रूप से पूरे HTTP हेडर को भेजा जाना है, लेकिन यह कम इष्टतम लगता है।

वैसे भी, क्या मैं केवल कर्ल_सेटॉप () का उपयोग करने के विकल्प पास कर सकता हूं, जो कहते हैं कि POST का उपयोग करें, पाठ / सादे का उपयोग करें, और एक को कच्चा डेटा भेजें $variable?

जवाबों:


229

मैं बस समाधान मिल गया, किसी और के ठोकर खाने के मामले में अपने ही सवाल का जवाब देने की तरह।

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,            "http://url/url/url" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST,           1 );
curl_setopt($ch, CURLOPT_POSTFIELDS,     "body goes here" ); 
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: text/plain')); 

$result=curl_exec ($ch);

4
क्या php आपके लिए सामग्री-लंबाई शीर्षलेख सेट करेगा या आपको इसे भी सेट करना चाहिए?
एरिक बलोच

3
मुझे यह काम करने के लिए नहीं मिल सकता है। मेरे पास एक पृष्ठ है जिसे मैं कच्चे डेटा को पोस्ट करने की कोशिश कर रहा हूं। यह पेज एक डेटाबेस टेबल में प्राप्त सभी कच्चे डेटा को रिकॉर्ड करता है। कोई नई पंक्तियाँ नहीं हैं। क्या आप जानते हैं कि '09 के बाद से यहाँ कुछ भी बदला है?
जेम्स

1
यह मेरे लिए काम करता है, किसी भी HTTP हेडर को निर्दिष्ट किए बिना।
xryl669

12
मुझे सिर्फ एहसास हुआ कि शरीर यहाँ जाता है किसी भी वैध जौन स्ट्रिंग शामिल कर सकते हैं।
shasi kant

1
इस कच्चे पद के लिए 2G की सीमा है। यदि आप फ़ाइल को 2G से बड़ा भेजने का प्रयास करते हैं तो उन्हें 2G पर वापस भेज दिया जाएगा। इसकी स्ट्रिंग प्रकार की एक सीमा भरी जा रही है।
काडेन येली

5

गुझिया पुस्तकालय के साथ कार्यान्वयन:

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

$httpClient = new Client();

$response = $httpClient->post(
    'https://postman-echo.com/post',
    [
        RequestOptions::BODY => 'POST raw request content',
        RequestOptions::HEADERS => [
            'Content-Type' => 'application/x-www-form-urlencoded',
        ],
    ]
);

echo(
    $response->getBody()->getContents()
);

PHP CURL एक्सटेंशन:

$curlHandler = curl_init();

curl_setopt_array($curlHandler, [
    CURLOPT_URL => 'https://postman-echo.com/post',
    CURLOPT_RETURNTRANSFER => true,

    /**
     * Specify POST method
     */
    CURLOPT_POST => true,

    /**
     * Specify request content
     */
    CURLOPT_POSTFIELDS => 'POST raw request content',
]);

$response = curl_exec($curlHandler);

curl_close($curlHandler);

echo($response);

सोर्स कोड

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