Как мне написать тикеты в API Zendesk, используя запросы POST JSON в VBA? - PullRequest
0 голосов
/ 13 февраля 2020

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

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

"error": "Unprocessable Entity", "message": "серверу не удалось разобрать JSON"

Мой код выглядит следующим образом: (заменяет мой фактический домен Zendesk, имя пользователя и токен с «zendeskdomain», «username» и «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. Я также смог установить соединение GET для работы, используя те же три заголовка запроса, которые использовались в приведенном выше коде POST.

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

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

Спасибо

1 Ответ

1 голос
/ 13 февраля 2020

Внешние пары двойных кавычек не нужны и делают 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"" }}}"
...