【发布时间】:2018-07-31 17:24:53
【问题描述】:
我正在尝试使用 API 将库存项目插入 Acumatica,但我收到 400 错误 - 错误请求。我正在使用 HttpClient 登录、检索库存商品并发送插入请求。除插入请求外,一切正常。我试过以下网址(包括扩展参数):
http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem?$expand=Attributes,CrossReferences,UOMConversions,VendorDetails,WarehouseDetails
...以及以下网址(不带展开参数)
http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem
我通过 HttpClient PutAsync 调用,传入上面提到的 URL,数据是来自使用 API 检索的库存项目的 JSON,并且当前数据库中不存在。
client.PutAsync(insertUrl, new StringContent(data, Encoding.UTF8, "application/json")).Result;
任何想法我缺少什么?
新细节: 在使用 Postman 进一步调试和测试后,来自 PUT 的错误似乎是“从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:StartArray。路径'',第 1 行,位置 1。” JSON 是直接从 GET 获取的,所以我不确定问题可能是什么。下面是从 PUT 返回错误的 JSON。
[
{
"id": "cc27ce56-6302-4f1b-97aa-49cca3ed32ea",
"rowNumber": 1,
"note": "",
"Attributes": [],
"BaseUOM": {
"value": "EA"
},
"CrossReferences": [],
"DefaultIssueLocationID": {
"value": "R1S1"
},
"DefaultReceiptLocationID": {
"value": "RECEIVING"
},
"DefaultWarehouseID": {
"value": "WHOLESALE"
},
"Description": {
"value": "tonyitem2"
},
"ImageUrl": {},
"InventoryID": {
"value": "TONYITEM2"
},
"IsAKit": {
"value": false
},
"ItemClass": {
"value": "CONSUMER 300TOYS"
},
"ItemStatus": {
"value": "Active"
},
"ItemType": {
"value": "Finished Good"
},
"LastModified": {
"value": "2018-08-03T12:09:19.907-04:00"
},
"LotSerialClass": {
"value": "NOTTRACKED"
},
"PurchaseUOM": {
"value": "EA"
},
"SalesUOM": {
"value": "EA"
},
"UOMConversions": [],
"VendorDetails": [],
"Volume": {
"value": 0
},
"WarehouseDetails": [
{
"id": "3ca5ea4c-c651-498e-8e6c-49119481982c",
"rowNumber": 1,
"note": "",
"DefaultIssueLocationID": {
"value": "R1S1"
},
"DefaultReceiptLocationID": {
"value": "RECEIVING"
},
"IsDefault": {
"value": true
},
"QtyOnHand": {
"value": 0
},
"WarehouseID": {
"value": "WHOLESALE"
},
"custom": {},
"files": []
}
],
"Weight": {
"value": 0
},
"custom": {},
"files": []
}
]
我也试过去掉围绕 JSON 的括号,然后错误是: “没有实体满足条件。”。问题可能是 id 有 GUID,但我正在尝试插入?您如何指示 PUT 应该插入?
【问题讨论】:
-
如果您发送的 JSON 数据内容更多,您能否添加完整的错误消息,这可能有助于我们为您指明正确的方向
-
顺便说一下,首先我尝试检索库存项目以确定它是否已经存在... localhost/AcumaticaERP/entity/Default/6.00.001/… eq 'TONYITEM93'&$expand=Attributes,CrossReferences,UOMConversions,VendorDetails,WarehouseDetails This返回 500 错误。然后我尝试使用上面提到的 url 插入。除了我提到的 400 错误之外,我看不到其他错误信息。 JSON 太大,无法作为评论发布,但我可以发布一些...
-
[{"id":"5547a1e7-1871-4b36-b2d2-8d9a417bcc94","rowNumber":1,"note":"","Attributes":[],"BaseUOM": {"value":"EA"},"CrossReferences":[],"DefaultIssueLocationID":{"value":"R1S1"},"DefaultReceiptLocationID":{"value":"RECEIVING"},"DefaultWarehouseID":{ "value":"WHOLESALE"},"Description":{"value":"tonyitem93"},"ImageUrl":{},"InventoryID":{"value":"TONYITEM93"},"IsAKit":{" value":false},"ItemClass":{"value":"CONSUMER 300TOYS"},"ItemStatus":{"value":"Active"},"ItemType":{"value":"Finished Good"}, "LastModified":{"value":"2018-07-31T16:26:03.06-04:00"},"LotSerialClass":{"value":"NOTTRACKED"},"PurchaseUOM":
-
我备份了一个步骤,并尝试在两个不同的站点上使用相同的语法对相同的库存项目进行简单的 GET,一个成功返回该项目,但另一个返回 500 错误。我用 Postman 查看了具体的错误,它是“视图不存在”。 StockItem 是两个站点中的一个端点,那么它可以抱怨什么?
-
我认为真正的问题是一个站点的 StockItem 端点抛出了一个错误。其他端点很好,但 StockItem 不行。有任何想法吗?我想我可以尝试重新安装我的网站。
标签: acumatica