注意:我也在Excel先生上发布了这个。 链接在这里。
我正在尝试使用 VBA 从 Access/Excel 编写到 Zendesk API 的票证。 我不断收到以下错误:
"错误":"无法处理的实体","消息":"服务器无法解析 JSON">
我的代码如下:(分别将我的实际 Zendesk 域、用户名和令牌替换为"zendeskdomain"、"用户名"和"token"(。
Dim strURL As String, strParse() As String, jsonStr As String
Dim hreq As New MSXML2.XMLHTTP60
Dim tixScript As Object
strURL = "https://zendeskdomain.zendesk.com/api/v2/tickets.json"
hreq.Open "POST", strURL, 0, "username/token", "token"
hreq.setRequestHeader "User-Agent", "Chrome/78.0.3904.108"
hreq.setRequestHeader "Content-Type", "application/json"
hreq.setRequestHeader "Accept", "application/json"
jsonStr = """{""ticket"": {""subject"": ""Testing post requests"", ""requester_id"":393329203772, ""comment"": { ""body"": ""This will work"" }}}"""
hreq.Send jsonStr
MsgBox hreq.responseText
我能够使用相同的JSON字符串并使用实际的Zendesk Developer API创建票证。 我还能够使用上面 POST 代码中使用的相同三个请求标头建立 GET 连接以工作。
我觉得我错过了一些简单的东西,但我似乎无法让它工作。
任何帮助将不胜感激。
谢谢
双引号的外部对是不必要的,并且jsonStr
包含无效的 JSON。在 VBA 中使用Debug.Print
表明jsonStr
最终包含:
"{"ticket": {"subject": "Testing post requests", "requester_id":393329203772, "comment": { "body": "This will work" }}}"
将jsonStr
设置为:
jsonStr = "{""ticket"": {""subject"": ""Testing post requests"", ""requester_id"":393329203772, ""comment"": { ""body"": ""This will work"" }}}"