Что подразумевается под «допустимым форматом массива для коллекций»?

При вызове метода REST API я получаю ответ, что произошла ошибка

Ошибка обработки потока запросов. Полезная нагрузка должна представлять допустимый формат массива для коллекций.

Но при поиске:

допустимый формат массива для коллекций

Я много возвращаюсь, но ничто не проясняет, что подразумевается под этим. Я предполагаю, что данные, которые я посылаю, недействительны (в настоящее время я отправляю array('foo' => 'Bar')) но это наверное не правильно.

У кого-нибудь есть указатель на то, что здесь происходит? Или что я мог проверить?

Документация ExactOnline (который я отправляю) недостаточно. Он только указывает, какие поля у них есть, но ничего о подобных сообщениях об ошибках.

==========================

Хорошо, это требует некоторых разъяснений, мой плохой!

Как написано, я общаюсь с ExactOnline, через их API.

Я вызываю метод для размещения заказа на продажу. При этом я использую набор скриптов, которые Exact предоставляет на своем сайте (для разработчиков).

на странице:
https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesOrderSalesOrders

в разделе «POST» вы можете прочитать обязательные поля, в которых «SalesOrderLines» является одним из них. Это не говорит мне, что он ожидает или в каком формате.

Я завернул свой массив в json_encode и попытался снова, но не повезло. Это все еще говорит мне ту же ошибку.

-2

Решение

В настоящее время я использую тот же API ExactOnline. Должен сказать, что в документации действительно недостаточно информации по этой теме!

Чтобы создать правильный массив для коллекций, вы должны использовать следующую базу:

$array = array(
'InvoiceTo' => 'bc960e43-be9d-409c-9cfe-31ce56cc3238',
'SubscriptionLines' => array(
array('Item' => '7e50702b-5bbf-4b77-ab73-5dad50016e82')
)
)

Json_encode ($ array) в этом списке будет:

{
"InvoiceTo":"bc960e43-be9d-409c-9cfe-31ce56cc3238",
"SubscriptionLines":[
{"Item":"7e50702b-5bbf-4b77-ab73-5dad50016e82"}
]
}

Поэтому важной частью здесь является выполнение array (array ()) внутри SubScriptionLines. Это говорит JSON, что вы хотите использовать массив JSON вместо нотации объекта JSON.

Для вашего конкретного вопроса вам необходимо заменить ключи на ключи, указанные в документации для SalesOrder. Не все обязательные поля API включены здесь, потому что это решение для подписок. Однако принцип будет таким же.

Надеюсь, что это поможет вам и другим полностью реализовать API точно 🙂

2

Другие решения

Как вы сериализуете свою полезную нагрузку? Если это должно быть в формате JSON, коллекция будет выглядеть так:

[
{
"foo": "bar"},
{
"foo": "baz"}
]
1

По вопросам рекламы [email protected]