当调用REST API方法时,我得到一个错误
处理请求流时出错。有效负载必须表示集合的有效数组格式。
但在搜索时:
集合的有效数组格式
我经常回来,但没有什么能澄清这是什么意思。我猜我发送的数据无效(目前我正在发送array('foo' => 'Bar')
),但这可能不正确。
有人知道这里发生了什么吗?或者我可以检查什么?
ExactOnline
的文档(我正在张贴到)不够。它只说明了它们有哪些字段,但没有说明这类错误消息。
==========================
好的,这需要澄清,我的错!
如文所述,我通过他们的API与ExactOnline进行沟通。
我正在调用发布销售订单的方法。有了这些,我正在使用Exact在他们的网站上提供的一组脚本(供开发人员使用)。
第页:https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesOrderSalesOrders
在"POST"下,您可以读取必填字段,其中"SalesOrderLines"就是其中之一。它没有告诉我它期望什么或以什么形式。
我将数组封装在json_encode中,然后重试,但没有成功。它仍然告诉我同样的错误。
我目前正在使用同一个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的所有指令字段,因为这个解决方案是针对订阅的。然而,原则是一样的。
希望这将有助于您和其他人充分实现准确的API:)
如何序列化负载?如果它是JSON格式的,那么一个集合将如下所示:
[
{
"foo": "bar"
},
{
"foo": "baz"
}
]