문제

나는 기지에서 벗어날 수 있지만 오후 내내 달리기 위해 노력하고 있습니다. 컬 포스트 명령 이 쉬는 시간에 PHP 프레임 워크 튜토리얼. 내가 이해하지 못하는 것은 PHP가 내 게시물을 어떻게 해석 해야하는지, 그것은 항상 빈 배열로 나타납니다.

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 Conflict
Date: Fri, 01 May 2009 22:03:00 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

{"screencast":{"id":null,"subject":null,"body":null,
         "dataUrl":null,"dataMedium":null,"createdOn":null,"author":null}}
도움이 되었습니까?

해결책

Jordans는 $ _post-array가 채워지지 않은 이유에 대한 분석이 정확합니다. 그러나 사용할 수 있습니다

$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

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

컬이 데이터를 JSON으로 보내도록 추가 플래그를 몇 개 설정해야합니다.

명령

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

깃발

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

자원

다음과 같은 인용문을 피해야합니다.

curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}'  \
  http://localhost:3570/index.php/trainingServer/screencast.json
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top