Использование Microsoft.XMLHTTP в классическом ASP для публикации JSON приводит к пустому содержимому - PullRequest
1 голос
/ 28 июня 2019

Это меня некоторое время сбивало с толку.Я пытаюсь опубликовать контент в формате JSON на веб-крюке, но мне нужно использовать классический ASP.Я могу сделать это с помощью jquery, но должен быть на стороне сервера.Я также пытался использовать JScript, что приводит к той же проблеме.Также пробовал отдельный сервер

Сценарий принципиально работает, если я установлю Content-Type на application/x-www-form-urlencoded, то опубликованный контент проходит нормально, но как только я перехожу на application/json, контент исчезает (запросделает это, хотя, поскольку я могу осмотреть заголовки на другом конце)

strEnvelope = "{""content"":""Serverside Test Post"",""embeds"": [{""description"":""Now to grab and extract content""}]}"
data = "content="&Server.URLEncode(strEnvelope)

dim xmlhttp 
set xmlhttp = server.Createobject("Microsoft.XMLHTTP")
xmlhttp.Open "POST","https://discordapp.com/api/webhooks/000000000000/key",false
'xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "Content-Type", "application/json"
xmlhttp.send(data)
Response.Write xmlhttp.ResponseText
Set xmlhttp = nothing

Любые мысли очень ценятся, это странно, так как все, что я делаю, - это изменение заголовка Content-Type

1 Ответ

2 голосов
/ 01 июля 2019

Честно говоря, я не знаю почему, но он начал работать.

Изначально я попытался создать строку json с помощью функции stringify (JSON Parser, написанный Фабио Зенди Нагао, если вы хотите использовать Google), и заметил, что она работает.

Но потом я заметил, что работали некоторые другие более ранние тесты.

На данный момент я объясняю это включением:

xmlhttp.setRequestHeader "Accept","application/json"

Однако это было в предыдущих тестах, которые потерпели неудачу - теперь это работает такЯ не жалуюсь: -)

...