[php] PHP에서 cURL을 사용한 RAW POST

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를 사용하고 텍스트 / 일반을 사용하고 원시 데이터를 보내는 curl_setopt () 옵션을 전달할 수 $variable있습니까?



답변

나는 다른 누군가가 우연히 발견 할 경우를 대비하여 내 질문에 대답하는 해결책을 찾았습니다.

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


답변

Guzzle 라이브러리로 구현 :

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

소스 코드


답변