2015-01-26 8 views
0

내 API 설명서에 다음과 같은 cURL을 입력해야한다고 나와 있습니다.PHP cURL JSON API

-H "Accept: application/json" 
-F grant_type=consumer_credentials 
-F consumer_key=ABCDEFGHIJKLMN 
-F consumer_secret=123456789 
https://sandbox.apps.****.com/api/AccessToken 

내가 무엇을 -F 비트와는 아무 생각도 없어 (도 무엇 -F가 약자를!) 그래서 내가 JSON 포스트 데이터로를 넣어.

-H가 헤더라고 가정합니다.

는 출발점으로 나는이 있었다 :

$data = array(
    "grant_type" => "consumer_credentials", 
    "consumer_key" => "ABCDEFGHIJKLMN", 
    "consumer_secret" => "123456789" 
); 

$str_data = json_encode($data); 

$url_send ="https://sandbox.apps.****.com/api/AccessToken"; 

function sendPostData($url, $post){ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json')); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
} 

echo " " . sendPostData($url_send, $str_data); 

을하지만 얻을 모두 오류가 발생라는 페이지입니다. 로그인 데이터로 JSON을 리턴해야합니다.

+0

이'아마이 필드를 -F' 수

덕분에, CURLOPT_POSTFIELDS''내 게시하려면? ... – War10ck

+2

'남자 curl' 모든 명령 줄 인수가 무엇을 말할 것 .. . 또는 curl --help. 그리고 아니,이 일을 제대로하지 않는 것입니다. '-F'는 게시 필드 키 = 값 쌍을 설정합니다. 당신은 단지 하나의 무명 json 문자열을 보내고 있습니다. –

+0

RTFM http://curl.haxx.se/docs/manpage.html – rjdown

답변

0

마크 (Marc)가 말했듯이 정상적인 현장 데이터 대신 json을 통해 전송하고있었습니다.

나는

foreach($data as $key=>$value) { $str_data .= $key.'='.$value.'&'; } 
rtrim($str_data, '&'); 

대신

$str_data = json_encode($data); 

에 넣고 지금 작동하는 것 같군. 필수 필드 중 하나와 같이