programing

PHP cURL GET 요청 및 요청 본문

closeapi 2023. 7. 25. 20:58
반응형

PHP cURL GET 요청 및 요청 본문

다음과 같은 GET 요청에 대해 cURL을 사용하려고 합니다.

function connect($id_user){
    $ch = curl_init();
    $headers = array(
    'Accept: application/json',
    'Content-Type: application/json',

    );
    curl_setopt($ch, CURLOPT_URL, $this->service_url.'user/'.$id_user);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $body = '{}';

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Timeout in seconds
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $authToken = curl_exec($ch);

    return $authToken;
}

보시다시피, 저는 $body를 요청 본문으로 전달하고 싶지만, 그것이 맞는지 아닌지 모르겠습니다. 그리고 저는 실제로 이것을 디버그할 수 없습니다. 당신은 사용할 권리가 있는지 알고 있습니까?curl_setopt($ch, CURLOPT_POSTFIELDS,$body);GET 요청으로?

이 전체 코드는 POST와 완벽하게 작동하기 때문에 이제 보시는 것처럼 GET로 변경하려고 합니다.

받아들여진 답이 틀렸습니다.GET요청에 실제로 본문이 포함될 수 있습니다.WordPress에서 구현한 솔루션은 다음과 같습니다.

curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $body );

편집: 명확하게 하기 위해, 이니셜curl_setoptlibcurl은 HTTP 방법을 기본값으로 하기 때문에 이 경우에 필요합니다.POST사용 시CURLOPT_POSTFIELDS(설명서 참조).

CURLOPT_POSTFIELDS이름에서 알 수 있듯이, 그것은 a의 (몸통)을 위한 것입니다.POST요청합니다.GET요청합니다. 페이로드는 쿼리 문자열 형식의 URL의 일부입니다.

이 경우 전송해야 하는 인수(있는 경우)로 URL을 구성하고 cURL에 대한 다른 옵션을 제거해야 합니다.

curl_setopt($ch, CURLOPT_URL, $this->service_url.'user/'.$id_user);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);

//$body = '{}';
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
//curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  <?php
  $post = ['batch_id'=> "2"];
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,'https://example.com/student_list.php');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
  $response = curl_exec($ch);
  $result = json_decode($response);
  curl_close($ch); // Close the connection
  $new=   $result->status;
  if( $new =="1")
  {
    echo "<script>alert('Student list')</script>";
  }
  else 
  {
    echo "<script>alert('Not Removed')</script>";
  }

  ?>

유사한 문제를 가진 사람들을 위해, 요청 라이브러리는 당신이 당신의 php 애플리케이션 내에서 외부 http 요청을 보기 흉하게 만들 수 있게 해줍니다.단순화된 GET, POST, PATCH, DELETE 및 PUT 요청.

샘플 요청은 아래와 같습니다.

use Libraries\Request;

$data = [
  'samplekey' => 'value',
  'otherkey' => 'othervalue'
];

$headers = [
  'Content-Type' => 'application/json',
  'Content-Length' => sizeof($data)
];

$response = Request::post('https://example.com', $data, $headers);
// the $response variable contains response from the request

동일한 문서는 프로젝트의 README.md 에서 확인할 수 있습니다.

당신은 올바른 방법으로 그것을 했습니다.

curl_setopt($ch, CURLOPT_POSTFIELDS,$body);

하지만 나는 당신이 실종된 것을 알아챘어요.

curl_setopt($ch, CURLOPT_POST,1);

언급URL : https://stackoverflow.com/questions/17230246/php-curl-get-request-and-requests-body

반응형