phppostcurlput

RAW POST using cURL in PHP


How can I do a RAW POST in PHP using cURL?

Raw post as in without any encoding, and my data is stored in a string. The data should be formatted like this:

... 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

One option is to manually write the entire HTTP header being sent, but that seems less optimal.

Anyway, can I just pass options to curl_setopt() that say use POST, use text/plain, and send the raw data from a $variable?


Solution

  • I just found the solution:

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