Excel+;VBA和x2B;JSON+;提出请求

Excel+;VBA和x2B;JSON+;提出请求,json,excel,vba,Json,Excel,Vba,我不完全理解如何正确打包需要发送到API的类别ID Sub testing() Dim sc As Object Set sc = CreateObject("ScriptControl") sc.Language = "JScript" Dim strURL As String: strURL = "https://api-sandbox.site.com/v1/customers/111111?api_key=xxxxxxxxxxxxx" Dim strRequest

我不完全理解如何正确打包需要发送到API的类别ID

Sub testing()
  Dim sc As Object
  Set sc = CreateObject("ScriptControl")
  sc.Language = "JScript"

  Dim strURL As String: strURL = "https://api-sandbox.site.com/v1/customers/111111?api_key=xxxxxxxxxxxxx"

  Dim strRequest
  Dim XMLhttp: Set XMLhttp = CreateObject("msxml2.xmlhttp")
  Dim response As String

  XMLhttp.Open "PUT", strURL, False
  XMLhttp.setrequestheader "Content-Type", "application/json;charset=UTF-8"
  XMLhttp.send strRequest
  response = XMLhttp.responseText

End Sub
目标: 获取一组类别ID并将其推送到特定的客户端。我目前的重点是了解如何在单个案例中做到这一点。如往常一样,我们非常感谢您提供的任何信息

https://api-sandbox.site.com/v1/customers/clientID?api_key=xxxxxxxxxxxxx
API使用JSON发送/接收。类别的格式(据我所知)应为:

{"categoryIDs" : [ 1, 2096, 2008, 2009 ]}
API中的示例会话:

PUT /v1/customers/2938293/locations/39483?api_key=xxxxxxxxxxxxx HTTP/1.1
Host: api.site.com
Content-Type: application/json;charset=UTF-8

{
  "zip": "92886",
  "phone": "7147147147",
  "countryCode": "US",
  "state": "CA",
  "locationName": "Backpack Brigade",
  "isPhoneTracked": false,
  "specialOfferIsDeal": false, 
  "specialOffer": "Check out our new Summer Backpacks!",
  "folderId": "0",
  "city": "Yorba Linda",
  "id": "123",
  "customerId": "140149",
  "categoryIds": [
    90,
    833
  ],
  "suppressAddress": false,
  "address": "4345 Bastanchury Road",
  "websiteUrl": "http://backpackbrigade.com/",
  "hours":"2:12:00:PM:5:00:PM,3:12:00:PM:5:00:PM,4:12:00:PM:5:00:PM,6:12:00:PM:5:00:PM,7:12:00:PM:5:00:PM",
  "additionalHoursText": "Sunday by Appointment",
  "description": "Best Backpack Store in Southern California!",
  "twitterHandle": "backpackbrigade",
  "logo": { 
    "url": "http://cms.site.com/cms/328812732-backpack.png",
    "description": "Picture of a backpack" 
  },
  "displayLatitude": 33.8991997,
  "displayLongitude": -117.8437043,
  "emails":["admin@backpackbrigade.com"]
}
我不能肯定地说,但我提供的代码主要用于处理响应,似乎我没有打包任何东西来发送
PUT
请求


我发送的类别ID是否需要打包为
对象
字符串
可以吗

对于希望使用JSON和EXCEL的任何人,我强烈推荐将此网站作为资源:

Bruce Mcpherson在这里组合的模块使put请求、JSON API调用的排序和保存数据变得简单而直接


我希望这能帮助任何和我处境相同的人

你的问题有点宽泛——如果你有一个具体的问题要解决,最好直接解决细节,而不是寻求一般性的帮助。PUT只是另一个HTTP动词,所以您看到的(例如)使用XMLHTTP发布数据的任何代码示例都可能被替换为POST的子项PUT重新使用。你可能找不到“入门级”信息的一个原因是,这不是一个真正的“入门级”任务。我知道这是一个广泛的任务,但你给出的这个小提示很有帮助!接受了你的建议@TimWilliams。我现在有了一个起点。当我添加
MsgBox(response)
时,我得到一个错误,它表明:{“errors”:[{“message”:“我们无法反序列化您的json请求:值必须是JSONObject(但是是一个类java.lang.String)”}}}}。您是否省略了填充
strequest
的部分?不幸的是,我没有忽略填充
strequest
的部分。我不确定如何构造JSON以将其发送到API。