json - verificacion - ¿Accediendo al cuerpo de una solicitud(POSTado desde el cliente de iOS) usando ASP clásico?
no compartir forma de pago en familia (3)
En ASP clásico, Request.Form
es la colección utilizada para cualquier información enviada a través de POST.
En aras de la exhaustividad, Request.QueryString
que Request.QueryString
es la colección utilizada para cualquier información enviada a través de GET / the Query String.
Supongo, basándome en lo anterior, que aunque el cliente no sea un navegador web, la colección Request.Form debe completarse.
Nota: todo esto supone que los datos enviados son de naturaleza textual y que no se envían cargas binarias (por ejemplo, imágenes o archivos). Actualice su cuerpo de pregunta si esta es una suposición incorrecta.
Para probar, escriba los datos sin formato y vea lo que tiene, algo como:
Response.Write(Request.Form)
Que con una página web regular generará algo así como
field=value&field2=value2
Si obtienes algo similar, podrías utilizarlo como referencia para un índice adecuado.
Si no obtiene algo así, actualice su pregunta con lo que intentó y lo que obtuvo.
¿Cómo accedo a lo que un cliente ha publicado en mi clásico servidor ASP? Sé que existe la variable Request.Forms, pero la solicitud del cliente no se realizó utilizando un Formulario. El cuerpo de la solicitud del cliente es solo una cadena hecha usando una declaración POST estándar. Gracias
Necesita leer los bytes de solicitud si el tipo de contenido de la solicitud enviada por el cliente no es información del formulario. En este caso, la solicitud no es un formulario de datos al que se puede acceder a través de pares nombre-valor, por lo que no puede usar la colección Request.Form. Sugiero investigar el método BinaryRead .
Lectura de datos publicados y conversión en cadena:
If Request.TotalBytes > 0 Then
Dim lngBytesCount
lngBytesCount = Request.TotalBytes
Response.Write BytesToStr(Request.BinaryRead(lngBytesCount))
End If
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 = "iso-8859-1"
BytesToStr = Stream.ReadText
Stream.Close
Set Stream = Nothing
End Function
Espero eso ayude.
Actualización # 1:
Con el uso de JScript
if(Request.TotalBytes > 0){
var lngBytesCount = Request.TotalBytes
Response.Write(BytesToStr(Request.BinaryRead(lngBytesCount)))
}
function BytesToStr(bytes){
var stream = Server.CreateObject("Adodb.Stream")
stream.type = 1
stream.open
stream.write(bytes)
stream.position = 0
stream.type = 2
stream.charset = "iso-8859-1"
var sOut = stream.readtext()
stream.close
return sOut
}
Para obtener el valor de cadena JSON solo use CStr(Request.Form)
Funciona un placer