Использование curl для отправки массива в API Godaddy - PullRequest
2 голосов
/ 08 июня 2019

Я пытаюсь опубликовать несколько доменов в API Godaddy, чтобы получить информацию о ценах и доступности.Однако всякий раз, когда я пытаюсь использовать curl для выполнения этого запроса, мне ничего не возвращается.Я дважды проверил свои ключевые учетные данные, и все, кажется, правильно с этой целью.Я уверен, что проблема заключается в форматировании пост-поля, я просто не знаю, как это сделать ... Спасибо всем, кто может помочь заранее!

$header = array(
  'Authorization: sso-key ...'
);


$wordsArray = ['hello.com', "cheese.com", "bytheway.com"];
$url = "https://api.godaddy.com/v1/domains/available?checkType=FAST";


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 
curl_setopt($ch, CURLOPT_POST, true); //Can be post, put, delete, etc.
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $wordsArray);

$result = curl_exec($ch);  
$dn = json_decode($result, true);
print_r($dn);

1 Ответ

1 голос
/ 08 июня 2019

В вашем коде есть две проблемы:

  1. Тип отправляемых данных должен быть application/json (по умолчанию это application/x-www-form-urlencoded), и ваше приложение PHPдолжен также принять application/json:
$headers = array(
    "Authorization: sso-key --your-api-key--",
    "Content-Type: application/json",
    "Accept: application/json"
);
Поля сообщения должны быть указаны как JSON.Для этого используйте функцию json_encode:
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($wordsArray));

Полный код PHP:

$headers = array(
    "Authorization: sso-key --your-api-key--",
    "Content-Type: application/json", // POST as JSON
    "Accept: application/json" // Accept response as JSON
);


$wordsArray = ["hello.com", "cheese.com", "bytheway.com"];
$url = "https://api.godaddy.com/v1/domains/available?checkType=FAST";


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($wordsArray));

$result = curl_exec($ch);

$dn = json_decode($result, true);
print_r($dn);
...