Как написать билеты в API Zendesk, используя запросы POST JSON в VBA?

Примечание. Я также разместил это на Mr. Excel. Ссылка здесь.

Я пытаюсь написать билет на Zendesk API из Access/Excel с помощью VBA. Я продолжаю получать следующую ошибку:

"ошибка": "Необрабатываемый объект", "сообщение": "серверу не удалось проанализировать 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

Я смог взять ту же строку JSON и создать тикет, используя реальный Zendesk Developer API. Я также смог заставить GET-соединение работать, используя те же три заголовка запроса, которые использовались в коде POST выше.

Я чувствую, что мне не хватает чего-то простого, но я не могу заставить его работать.

Любая помощь будет принята с благодарностью.

Спасибо


person user2843864    schedule 12.02.2020    source источник


Ответы (1)


Внешние пары двойных кавычек не нужны и заставляют jsonStr содержать недопустимый JSON. Использование Debug.Print в VBA показывает, что 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"" }}}"
person barrowc    schedule 12.02.2020