[php] PHP CURL에서 POST에서 GET으로 전환하는 방법

이전 Post 요청에서 Get 요청으로 전환 해 보았습니다. Get이라고 가정하지만 결국 게시물을 작성합니다.

PHP에서 다음을 시도했습니다.

curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);

내가 무엇을 놓치고 있습니까?

추가 정보 : POST 요청을 수행하도록 설정된 연결이 이미 있습니다. 성공적으로 완료되었지만 나중에 연결을 다시 사용하고 위의 setopts를 사용하여 GET으로 다시 전환하려고하면 여전히 불완전한 POST 헤더로 내부적으로 POST를 수행하게됩니다. 문제는 GET을 수행한다고 믿지만 콘텐츠 길이 매개 변수없이 POST 헤더를 넣고 411 오류로 연결이 실패한다는 것입니다.



답변

GET 요청을 수행 할 때 URL 끝에 쿼리 ​​문자열을 넣어야합니다.

$ qry_str = "? x = 10 & y = 20";
$ ch = curl_init ();

// 여기에 URL을 사용하여 쿼리 데이터 설정
curl_setopt ($ ch, CURLOPT_URL, 'http://example.com/test.php'. $ qry_str);

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ ch, CURLOPT_TIMEOUT, 3);
$ content = trim (curl_exec ($ ch));
curl_close ($ ch);
$ content 인쇄;
POST를 사용하면 대신 CURLOPT_POSTFIELDS 옵션을 통해 데이터를 전달합니다.
CURLOPT__URL에 전달합니다.
-------------------------------------------------- -----------------------

$ qry_str = "x = 10 & y = 20";
curl_setopt ($ ch, CURLOPT_URL, 'http://example.com/test.php');
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ ch, CURLOPT_TIMEOUT, 3);

// 요청 방법을 POST로 설정
curl_setopt ($ ch, CURLOPT_POST, 1);

// 여기에서 CURLOPT_POSTFIELDS를 사용하여 쿼리 데이터를 설정합니다.
curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ qry_str);

$ content = trim (curl_exec ($ ch));
curl_close ($ ch);
$ content 인쇄;

로부터 참고 curl_setopt()문서 에 대한 CURLOPT_HTTPGET(강조 추가)

HTTP 요청 방법을 GET TRUE으로 재설정 하려면 [CURLOPT_HTTPGET을 다음과 같게 설정] 합니다 .
GET이 기본값이므로 요청 방법이 변경된 경우에만 필요합니다.


답변

curl_exec ($ curl_handle)을 호출하기 전에 이것을 추가하십시오.

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');


답변

해결됨 : 문제는 여기에 있습니다.

로 전환하는 동안 및 및 지속성을 POST통해 설정 했습니다 . 서버는 헤더 가 올바른 것으로 가정하고 411로 돌아 왔습니다._CUSTOMREQUEST_POST_CUSTOMREQUESTPOST_POST_HTTPGET_CUSTOMREQUEST

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');


답변

기본적으로 CURL 요청은 GET이며 GET CURL 요청을 만들기 위해 옵션을 설정할 필요가 없습니다.


답변