복붙노트

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

PHP

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

내가 근본적인 출발점이 될지 모르지만, 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 서버에서도 마찬가지 였고, 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}}

해결법

  1. ==============================

    1.$ _POST 배열이 채워지지 않은 이유에 대한 요르단 분석은 정확합니다. 그러나

    $ _POST 배열이 채워지지 않은 이유에 대한 요르단 분석은 정확합니다. 그러나

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

    그냥 HTTP 본문을 검색하고 직접 처리 할 수 ​​있습니다. PHP 입출력 스트림을 참조하십시오.

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

  2. ==============================

    2.일반적으로 -d 매개 변수는 form-encoded로 해석됩니다. -H 매개 변수가 필요합니다.

    일반적으로 -d 매개 변수는 form-encoded로 해석됩니다. -H 매개 변수가 필요합니다.

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

    3.나는 PHP가 게시 된 데이터가 Querystring 형식 (key = value & key1 = value1)이 될 것으로 기대하기 때문에 당신이 빈 배열을 얻고 있다고 생각한다.

    나는 PHP가 게시 된 데이터가 Querystring 형식 (key = value & key1 = value1)이 될 것으로 기대하기 때문에 당신이 빈 배열을 얻고 있다고 생각한다.

    컬 요청을 다음으로 변경하십시오.

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

    그게 도움이되는지보십시오.

  4. ==============================

    4.컬이 JSON으로 데이터를 전송할 수 있도록 몇 가지 추가 플래그를 설정해야합니다.

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

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

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

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

    curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json
    
  6. from https://stackoverflow.com/questions/813487/how-to-post-json-to-php-with-curl by cc-by-sa and MIT license