#php #api #rest
#php #API #rest
Вопрос:
Застревание в post к Rest API с несколькими аргументами. Я пытаюсь изменить серверы имен с помощью API.
Ошибка, которую я получаю: "ObjectInvalid|Nameserver object invalid. Minimum of 2 nameservers is required.".
Я понимаю, что часть «ns» неверна. В руководстве я нахожу только это: "ns" : [{ns="ns1.domain.com", nsip=""},{ns="ns2.domain.com", nsip=""}],
Это мой код:
$values = array(
"domain" => "mydomain.com",
"ns" => "[{ns='ns1.domain.com', nsip=''},{ns='ns2.domain.com', nsip=''}]",
"contact_id" => 123456,
"years" => 1
);
// Set POST to 1 and send the array with values as a JSON-string
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => json_encode($values),
CURLOPT_URL => "https://www.apiurl.com/api/v1/domains/$domain/update",
CURLOPT_HTTPAUTH => CURLAUTH_ANY,
CURLOPT_USERPWD => "username:password"
));
Комментарии:
1. Это звучит как вопрос к владельцам API? Мы даже не знаем, что это за API, поэтому нам довольно сложно понять, какие или как они ожидают получить данные. Вы пробовали добавлять
ns
-string в качестве PHP-массива вместо этого? В любом случае, вы уже используетеjson_encode()
всю полезную нагрузку.2. Вы не должны создавать строку JSON вручную следующим образом:
"ns" => "[{ns='ns1.domain.com', nsip=''},{ns='ns2.domain.com', nsip=''}]"
. Поскольку вы запускаете егоjson_encode($values)
позже, он получает двойное кодирование, а затем, скорее всего, не может быть понят API. Сделайте это обычным подмассивом PHP и дайтеjson_encode
ему выполнить эту работу.
Ответ №1:
Трудно сказать точно, не просмотрев документацию, но, скорее всего, вам следует оставить сериализацию серверов json_encode
имен слишком:
$values = array(
"domain" => "mydomain.com",
"ns" => [
[
"ns" => "ns1.domain.com",
"nsip" => ""
],
[
"ns" => "ns2.domain.com",
"nsip" => ""
],
],
"contact_id" => 123456,
"years" => 1
);
Комментарии:
1. Только одна крошечная вещь — серверы имен, а не пространства имен.
2. Да, это оно! Спасибо, что помогли так быстро! (Придется подождать, пока я не смогу ответить)