Как получить значение request.body в asp classic? - PullRequest
1 голос
/ 28 мая 2019

На классической странице .asp я получаю сообщение POST (строка JSON), и оно отправляется в request.body, говорит парень, как его отправить. Но если у меня просто есть theresponse=request.form, я ничего не получаю?

Итак, как мне получить значение из request.body?

1 Ответ

2 голосов
/ 28 мая 2019

Некоторые API платежного шлюза, которые я использовал в прошлом, отправляли ответы таким способом. Данные (JSON) отправляются в виде двоичного сообщения.

Чтобы прочитать его, вам нужно использовать Request.BinaryRead с Request.TotalBytes, а затем Adodb.Stream для преобразования двоичного файла в текст UTF8:

Response.ContentType = "application/json"

Function BytesToStr(bytes)
    Dim Stream
    Set Stream = Server.CreateObject("Adodb.Stream")
        Stream.Type = 1 'adTypeBinary
        Stream.Open
        Stream.Write bytes
        Stream.Position = 0
        Stream.Type = 2 'adTypeText
        Stream.Charset = "utf-8"
        BytesToStr = Stream.ReadText
        Stream.Close
    Set Stream = Nothing
End Function

' You shouldn't really be receiving any posts more than a few KB,
' but it might be wise to include a limit (200KB in this example),
' Anything larger than that is a bit suspicious. If you're dealing
' with a payment gateway the usual protocol is to post the JSON 
' back to them for verification before processing. 

if Request.TotalBytes > 0 AND Request.TotalBytes <= 200000 then

    Dim postBody
    postBody = BytesToStr(Request.BinaryRead(Request.TotalBytes))

    Response.Write(postBody) ' the JSON... hopefully 

end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...