2012-06-21 5 views
3

게시 요청을 시뮬레이트하기 위해 restclient라는 firefox pluing을 사용하고 있습니다. 그것은 '모든 게시물 데이터를 데리러 것,하지만 제대로 서식을 경우 확실하지 않습니다.게시 요청에 대한 본문의 서식을 올바르게 지정하는 방법은 무엇입니까?

헤더 사용 : 콘텐츠 형식 : 응용 프로그램/JSON 몸 : { "ID": 1234}

만하지, 내 PHP에서 id 매개 변수를 따기 아니에요, 특별한 형식의 내가있다 설정해야합니까?

+0

이 맞는 것 같습니다. 문제는 아마 당신이 플러그인을 사용하는 방법입니다 – edwardmp

+0

잘 PHP 코드에서 print_r ($ _ POST)하고 있어요 그리고 그것은 비어 있습니다. 누군가가 궁금해하는 경우를 대비하여 메소드를 "POST"로 설정했습니다. – Rob

+1

이 게시물을 확인하십시오 : http://stackoverflow.com/questions/8893574/php-php-input-vs-post/8893792#8893792 – Quasdunk

답변

6

좋아, 그것을 가지고 작업은, 여기에 어떤

이 콘텐츠 형식을 필요로한다 모두를 돕는다.

+3

이 방법이 효과가있을 수는 있지만 실제로는 올바르지 않습니다. 콘텐츠에는 여러 유형이있을 수 없습니다. 이 경우에는 하나의 유형이며,이 경우'Content-Type : application/x-www-form-urlencoded'입니다. JSON은'{ 'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}'과 유사하게 보이고 헤더가'Content-Type : 응용 프로그램/json'. 분명히 이제 서버가 마지막 헤더를 선택합니다. 그러나 JSON이 아니기 때문에 오해의 소지가있는 것을 생략해도이 예제가 작동해야합니다. – Quasdunk

+6

그래서 'param1 = value1 & param2 = value2'와 같은 URL 인코딩 된 키 - 값 쌍으로 작업 할 때 올바른 Content-Type은'application/x-www-form-urlencoded'이며'$ _POST'를 통해 액세스 할 수 있습니다. - 서버 측의 배열. '{key1 ':'value1 ','key2 ':'value2 ','key3 ':'value3 '}'와 같은 JSON 데이터가 있다면 content-type을'application/json'으로 설정하면 데이터를'$ data_array = json_decode (file_get_contents ('php : // input'), true)와 함께 서버 측의 배열에 저장한다. – Quasdunk

4

PHP는 자동으로 $_POST 수퍼 글로벌으로 JSON 본문을 구문 분석하지 않습니다. 이는 application/x-www-form-urlencodedmultipart/form-data POST 본문에서만 발생합니다. 즉, 자신을 파싱 할 수 있습니다. php://input pseudo-stream을 통해 원시 POST 본문에 액세스 할 수 있습니다. 에 대한

param1=value1&param2=value2 

감사 : 몸과 같이 당신의 PARAMS을 설정 한 후

Content-Type: application/json 
Content-Type: application/x-www-form-urlencoded 

과 :

+0

좋아요, 추가되었습니다 콘텐츠 유형 : application/x-www-form- urlencoded, 아직도 안돼, 내가 다른 것을 놓치고 있습니까? 난 그냥 POST 요청을 시뮬레이션 싶어요. – Rob

+0

예. 실제 본문 내용은 JSON입니다. 서버를 보내고있는 것에 대해 거짓말을하는 것만으로는 충분하지 않습니다. 실제적으로 본문을 ['application/x-www-form-urlencoded' 형식으로 인코딩해야합니다 (http://en.wikipedia.org/wiki/Application/x-www-form-urlencoded#The_application.2Fx- www-form-urlencoded_type), 또는 백엔드에서 JSON을 명시 적으로 처리해야합니다. – lanzz

관련 문제