PHP CURL JSON API

0

В моей документации по API говорится, что мне нужно ввести следующую cURL.

локон

 -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 post.

Я предполагаю, что -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 ? ...
  • 2
    man curl скажет вам, что такое все аргументы командной строки ... или даже curl --help . И нет, вы делаете это неправильно. -F задает пару ключ поля = значение. вы просто отправляете одну безымянную строку json.
Показать ещё 4 комментария
Теги:
curl

1 ответ

0

Как сказал Марк, я отправлял через json вместо обычных полевых данных.

Я вставляю

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

вместо

$str_data = json_encode($data);

и, похоже, сейчас работает.

благодаря

Ещё вопросы

Сообщество Overcoder
Наверх
Меню