POST 使用 VBA (MS Access) 访问 Neto 站点 API 时出错

POST error using VBA (MS Access) for API to Neto site

我有一个访问数据库,我用它创建一个 json POST API 到一个使用 Neto (https://developers.neto.com.au/documentation/engineers/api-documentation) 的网站。我是 APIs 的新手,但已经研究了几个月并在理解它的工作原理方面取得了进展。我已经设法从请求中获得 200 状态响应,该响应将指示 header 信息(包括身份验证是正确的)但与 body 有关的错误(我相信)。 代码如下:

Dim reader As New XMLHTTP60
Dim username As String, APIkey As String
Dim strJson As String
 
strJson = "{" & _
  "'Filter': {" & _
    "'OrderStatus': 'Pick'," & _
    "'OutputSelector': [" & _
      "'OrderID'," & _
      "'ShippingOption'," & _
    "]," & _
  "}" & _
"}"

username = "xxx"
APIkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

reader.Open "POST", "https://www.yoursite.co.nz/do/WS/NetoAPI", False 
reader.setRequestHeader "NETOAPI_USERNAME", username
reader.setRequestHeader "NETOAPI_KEY", APIkey 
reader.setRequestHeader "Content-Type", "application/json"
reader.setRequestHeader "Accept", "application/json"
reader.setRequestHeader "NETOAPI_ACTION", "GetOrder"
reader.send strJson

Debug.Print reader.Status

Debug.Print reader.responseText

错误信息:

{"CurrentTime":"2021-09-17 02:42:50","Ack":"Error","Messages":[{"Error":{"Message":"JSON Error","SeverityCode":"Error"},"Warning":{"Message":"Warning","SeverityCode":"Warning","Description":"'\"' expected, at character offset 1 (before \"'Filter': {'OrderSta...\")"}}]}

最初我只是尝试为任何状态为 Pick 的订单检索 2 条数据(OrderID 和 ShippingOption)。 正如我在其他帖子中看到的那样,我尝试将所有 ' 替换为 "" 以及其他一些变体,但没有成功。

如有任何帮助,我们将不胜感激。谢谢

  1. 您在 JSON

    中使用单引号而不是双引号
  2. Filter 的值是一个包含在 [ ] 中的集合,所以我相信您也需要包装 Pick(尽管只有 1 个值)。

  3. 您在 ShippingOption 之后有一个额外的 ,,当它是最后一个值时,请将其删除。

试试这个:

strJSON = "{" & _
  """Filter"": {" & _
    """OrderStatus"": [""Pick""]," & _
    """OutputSelector"": [" & _
      """OrderID""," & _
      """ShippingOption""" & _
    "]" & _
  "}" & _
"}"

上面会产生下面的JSON:

{"Filter": {"OrderStatus": ["Pick"],"OutputSelector": ["OrderID","ShippingOption"]}}