2012-05-10 7 views
0

Github v3 API를 사용하고 JSON을 게시하여 프로필 (또는 다른 호출)을 업데이트하고 Github에서 다음 응답을 얻으려고합니다.Github API v3 PHP가 포함 된 POST

Array 
(
    [message] => Body should be a JSON Hash 
) 

내가 API의 문서에 관련 페이지를 통해 갈 : http://developer.github.com/v3/users/

이 페이지 : http://developer.github.com/v3/#http-verbs 여기

를 POST/PATCH를 다루고 내가

을 사용하고 코드입니다
$data = array("bio" => "This is my bio"); 
$data_string = json_encode($data); 

function curl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1); 
    curl_setopt($ch, CURLOPT_USERPWD, "USERNAME:PASSWORD"); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    $content = curl_exec($ch); 
    curl_close($ch); 
    return $content; 
} 

$result = json_decode(curl('https://api.github.com/user'),true); 

또한 CURLOPT_CUSTOMREQUEST'POST''PATCH'으로 시도했지만 다음과 같은 오류 응답이 표시됩니다. 둘 다.

누구든지 API에 데이터를 게시 할 수있는 올바른 방향을 제시 할 수 있습니까?

답변

1

global $data_string 중 하나이거나 $data_string 변수를 재사용을 위해 curl()으로 전달해야합니다.

예 :이 같은 헤더를 지정해야합니다

function curl($curl, $data) 
{ 
    $data_string = json_encode($data); 
    // your code here 
} 
+0

와우 ... 내가 이상 어떻게 볼 않았다! 감사. –

0

:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
+0

팁 매튜 주셔서 감사! –