Несколько параметров PHP Rest Api, как отправить с помощью curl

Застревание при публикации в 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"
    ));

Это звучит как вопрос к владельцам API? Мы даже не знаем, что это за API, поэтому нам довольно сложно понять, что и как они ожидают от данных. Вы пытались вместо этого добавить ns-строку в виде массива PHP? В любом случае вы уже используете json_encode() всей полезной нагрузки.

M. Eriksson 14.12.2020 17:24

Вы не должны создавать строку JSON вручную следующим образом: "ns" => "[{ns='ns1.domain.com', nsip=''},{ns='ns2.domain.com', nsip=''}]". Поскольку вы запускаете его json_encode($values) позже, он дважды кодируется и, скорее всего, не может быть понят API. Сделайте это обычным подмассивом PHP и позвольте json_encode выполнить эту работу.

El_Vanja 14.12.2020 17:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Трудно сказать точно, не видя документации, но, скорее всего, вам также следует оставить сериализацию серверов имен json_encode:

$values = array(
    "domain" => "mydomain.com",
    "ns" => [
        [
            "ns" => "ns1.domain.com",
            "nsip" => ""
        ],
        [
            "ns" => "ns2.domain.com",
            "nsip" => ""
        ],
    ],
    "contact_id" =>  123456,
    "years" => 1
);

Всего одна мелочь — серверы имен, а не пространства имен.

El_Vanja 14.12.2020 17:28

Да это оно! Спасибо, что так быстро помогли! (Придется подождать, пока я не приму ответ)

Silver 14.12.2020 17:32

Другие вопросы по теме