2013-10-03 2 views
3

나는이 컬 a를 REST API에 JSON을 보내는 기능을 가지고 : 서버에서PHP REST API를 통해 JSON을 검색

$url = "https://server.com/api.php"; 
$fields = array("method" => "mymethod", "email" => "myemail"); 

$result = sendTrigger($url, $fields); 

function sendTrigger($url, $fields){ 
    $fields = json_encode($fields); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=UTF-8")); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $curlResult["msg"] = curl_exec($ch); 
    $curlResult["http"] = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 
    return $curlResult; 
} 

을, 내가 가진 코드 :

$data = json_decode($_REQUEST); 
var_dump($data); 
exit(); 

나는 컬을 실행 명령을 내게 돌려 준다.

Warning: json_decode() expects parameter 1 to be string, array given in 

그것은 어떠냐?

감사합니다.

+0

은''json_decode'와 json_encode'을 혼합? – Brian

+1

[PHP에서 POST의 본문을 얻는 방법] 가능한 복제본? (http://stackoverflow.com/questions/8945879/how-to-get-body-of-a-post-in-php) – Quentin

+3

왜냐하면' $ _REQUEST'는 비어있는 경우라도 대부분 항상 배열입니다. JSON blob은 거기에 나타나지 않지만'php : // input'입니다. – mario

답변

8

양식 인코딩 된 콘텐츠 형식 중 하나를 사용하지 않는 경우 PHP는 데이터를 $_POST에 채우지 않습니다.

당신은 다음과 같은 PHP 원시 입력에서 JSON 페이로드를 얻을 필요가

:

$json = file_get_contents('php://input'); 
$array = json_decode($json); 
0

PHP json_decode에서 문자열을 가져 와서 객체로 변환합니다. $_REQUEST 변수는 $_GET, $_POST$_COOKIE (PHP reference 참조)의 내용을 포함하는 전역 변수입니다. 대부분 코드에 입력 오류가 있으며 $_REQUEST 대신 $request을 사용했을 가능성이 큽니다.

관련 문제