0

注意:我也在 E​​xcel 先生上发布了这个。链接在这里

我正在尝试使用 VBA 从 Access/Excel 向 Zendesk API 写入票证。我不断收到以下错误:

“错误”:“无法处理的实体”,“消息”:“服务器无法解析 JSON”

我的代码如下:(将我的实际 Zendesk 域、用户名和令牌分别替换为“zendeskdomain”、“用户名”和“令牌”)。

 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

我能够使用实际的 Zendesk Developer API 获取相同的 JSON 字符串并创建票证。我还能够使用上面 POST 代码中使用的相同的三个请求标头建立 GET 连接。

我觉得我错过了一些简单的东西,但我似乎无法让它发挥作用。

任何帮助将不胜感激。

谢谢

4

1 回答 1

1

外部双引号对是不必要的,并且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"" }}}"
于 2020-02-12T22:32:58.147 回答