IT story

curl로 PHP에 JSON을 게시하는 방법

hot-time 2020. 8. 5. 07:43
반응형

curl로 PHP에 JSON을 게시하는 방법


나는 기초를 벗어 났을 지 모르지만이 오후 PHP 프레임 워크 자습서에서 curl post 명령 을 실행 하기 위해 오후 내내 노력하고 있습니다. 내가 이해하지 못하는 것은 PHP가 POST를 해석하는 방법이며 항상 빈 배열로 나타납니다.

curl -i -X POST -d '{"screencast":{"subject":"tools"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json

(이 슬래시는 바보처럼 보이지 않게하기 위해 PHP 5.2를 사용하여 Windows에서 실행했으며 Linux curl이있는 Linux 서버에서도 시도했습니다)

내가 잃어버린 것이 있어야합니다. 왜냐하면 매우 간단 해 보입니다. 게시물은 올바르게 해석되지 않습니다. 그렇다면 모든 것이 훌륭하게 작동합니다.

이것이 내가 얻는 것입니다.

HTTP / 1.1 409 충돌
날짜 : 2009 년 5 월 1 일 금요일 22:03:00 GMT
서버 : Apache / 2.2.8 (Win32) PHP / 5.2.6
X-Powered-By : PHP / 5.2.6
전송 인코딩 : 청크
내용 유형 : text / html; 문자셋 = iso-8859-1

{ "screencast": { "id": null, "subject": null, "body": null,
         "dataUrl": null, "dataMedium": null, "createdOn": null, "author": null}}

$ _POST- 배열이 채워지지 않은 이유에 대한 요르단의 분석은 정확합니다. 그러나 사용할 수 있습니다

$data = file_get_contents("php://input");

http 본문을 검색하여 직접 처리하십시오. PHP 입력 / 출력 스트림을 참조하십시오 .

어쨌든 http multipart 양식 데이터를 처리하지 않기 때문에 프로토콜 관점에서 이것은 실제로 더 정확합니다. 또한 요청을 게시 할 때 application / json을 컨텐츠 유형으로 사용하십시오.


일반적으로 매개 변수 -d는 양식 인코딩으로 해석됩니다. -H매개 변수 가 필요합니다 .

curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json

PHP가 게시 된 데이터가 쿼리 문자열 형식 (key = value & key1 = value1)이 될 것으로 기대하기 때문에 빈 배열을 얻는다고 생각합니다.

컬 요청을 다음과 같이 변경하십시오.

curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json

그것이 도움이되는지 확인하십시오.


curl이 데이터를 JSON으로 전송하도록 몇 가지 추가 플래그를 설정해야합니다.

명령

$ curl -H "Content-Type: application/json" \
       -X POST \
       -d '{"JSON": "HERE"}' \
       http://localhost:3000/api/url

깃발

  • -H: 사용자 정의 헤더, 다음 인수는 헤더 일 것으로 예상됩니다
  • -X: 사용자 정의 HTTP 동사, 다음 인수는 동사입니다
  • -d: HTTP POST 요청에서 다음 인수를 데이터로 보냅니다.

자원


다음과 같이 따옴표를 이스케이프해야합니다.

curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}'  \
  http://localhost:3570/index.php/trainingServer/screencast.json

참고 URL : https://stackoverflow.com/questions/813487/how-to-post-json-to-php-with-curl

반응형