【问题标题】:Acumatica API insert data "Bad Request"Acumatica API 插入数据“错误请求”
【发布时间】: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


【解决方案1】:

我终于可以插入 PUT。最终起作用的是删除整个 JSON 周围的大括号“[”和“]”;加上删除我的 JSON 中的所有“id”、“rowNumber”、“custom”和“files”字段,以及所有空集合(例如 Attributes、CrossReferences)。我不确定其中哪些被删除解决了它并允许我插入,但它终于奏效了。

很遗憾,您通过 GET 检索到的 JSON 无法通过 PUT 插入,但必须先将所有这些都删除。好痛啊。

【讨论】:

  • 通常您应该能够在获取记录时插入记录,但我同意应该删除包装整个请求的“[”和“]”。
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 2014-09-22
  • 2015-06-12
  • 2019-11-10
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多