ServerXMLHTTP que se agrega al tipo de contenido
Estoy haciendo una solicitud HTTP del lado del servidor con un cuerpo JSON en VBScript como este:
Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oXMLHttp.open cMethod, cAPIURL, False, cUser, cPassword
oXMLHttp.setRequestHeader "Content-Type", "application/json"
oXMLHttp.send(cData)
cReturn = oXMLHttp.responseText
Set oXMLHttp = Nothing
El servicio al que llamo espera que el tipo de contenido seaapplication/json
naturalmente. Como puede ver, estoy configurando el encabezado de solicitud anterior para que sea como tal.
El problema es queMSXML2.ServerXMLHTTP
agregará un conjunto de caracteres a lo que establezca el tipo de contenido (no puedo encontrar documentación para este comportamiento), y el valor predeterminado parece ser UTF-8. Entonces, al final, el encabezado se envía comoapplication/json; Charset=UTF-8
, que no le gusta al servicio web.
Lo extraño es que puedo establecer explícitamente un juego de caracteres consetRequestHeader
, incluso sin sentido, yMSXML2.ServerXMLHTTP
luego dejará el encabezado solo. Por ejemplo..
oXMLHttp.setRequestHeader "Content-Type", "application/json; Charset=FOO"
Funciona bien y no se toca. Como puedo pararMSXML2.ServerXMLHTTP
de alterar el tipo de contenido?
EDITAR: descubrí que MSXML2.ServerXMLHTTP 6.0 no exhibe este comportamiento, al menos de manera predeterminada. Pero aún me gustaría ver si hay una solución para esto, ya que no estoy seguro de si estará disponible donde se deba instalar esta aplicación.
Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")