调用REST API方法时,我会收到错误
处理请求流时出错。有效负载必须代表集合的有效数组格式。
但是在搜索时:
集合的有效数组格式
我回来了很多,但没有说明这是什么意思。我猜我发送的数据无效(目前我正在发送array('foo' => 'Bar')
),但这可能不正确。
有没有人指出这里发生的事情?或者我能检查什么?
ExactOnline
的文档(我发布的文件)是不够的。它只说明了它们有哪些字段,但没有说明这些错误消息。
==========================
好的,这需要一些澄清,我的不好!
如上所述,我通过他们的API与ExactOnline进行沟通。
我正在调用发布销售订单的方法。有了它,我正在使用Exact在其网站上提供的一组脚本(供开发人员使用)。
页面上的: https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesOrderSalesOrders
在“POST”下,您可以阅读必填字段,其中“SalesOrderLines”就是其中之一。它没有告诉我它的期望或格式。
我将我的数组包装在json_encode中并再次尝试,但没有运气。它仍然告诉我同样的错误。
答案 0 :(得分:3)
我目前正在使用相同的ExactOnline API。不得不说文档确实缺乏关于这个主题的信息!
要为集合创建有效数组,必须使用以下基数:
$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"}
]
}
所以这里重要的部分是在SubScriptionLines中做数组(array())。这告诉JSON您要使用JSON数组而不是JSON对象表示法。
对于您的特定问题,您需要将密钥更改为SalesOrder文档中给出的密钥。并非所有api的manditory字段都包含在此处,因为此解决方案适用于Subscriptions。但是,原则是一样的。
希望这可以帮助您和其他人完全实现完整的API:)
答案 1 :(得分:1)
您如何序列化有效负载?如果它是JSON格式,集合将如下所示:
[
{
"foo": "bar"
},
{
"foo": "baz"
}
]