es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo enviar una cadena JSON a WCF utilizando VBA

Tratando de enviar un POST a servicios WCF que aceptan una cadena JSON basada en el JS del sitio web. No tuve suerte al simplemente copiar y pegar la cadena JSON en una celda de Excel y usar XMLHTTP60 de VBA para publicar. Siempre obtengo datos incorrectos (estado 400).
Intenté con la cadena JSON y el JSON en la celda y no funcionó. También intenté con la codificación JSON diferente sin éxito.
¿Alguna idea de cómo podría publicar una cadena JSON en WCF?

Mi suposición es que de alguna manera la cadena VBA pierde su formato durante la solicitud. O se envió un código de caracteres diferente \ y:, por ejemplo.

Mi código de VBA es el siguiente:

Sub test()

Dim XMLRequest As New MSXML2.XMLHTTP60
website = “URL”
postdata = thisworkbook.worksheets(“Sheet1”).range(“A1”).value
XMLRequest.Open “POST”, “webSite”, False
XMLRequest.SetRequestHeader “Content-Type”, “application/json; charset=UTF-8”
XMLRequest.send postdata

end sub

Sin embargo, puedo usar la consola del navegador para enviar el AJAX sin problemas.

var data=JSON.Stringify(‘{“country”:”{“name”:”USA”,”population”:”10000″}”}’);
$Ajax({
method: “POST”,
URL: URL,
dataType:json,
contentType: “application/json; charset=UTF-8”,
data:data,
cache: false
})

O no tengo problema en enviar JS en VBA a través del objeto IE.

IE.Document.parentWindow.execScript “Llamada de ajax”,”javascript”

Pero mi objetivo final es evitar IE, ya que no es estable, especialmente controlando a través de VBA.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con el formato del string JSON en VBA. Podría estar perdiendo su formato o enviando diferentes códigos de caracteres, lo que provoca que el servidor lo rechace con un error 400.

    Algunas posibles soluciones podrían ser:
    – Usar un método o biblioteca de codificación diferente para el string JSON en VBA
    – Verificar que el formato del string JSON coincide con el formato esperado por el servicio WCF
    – Intentar un método o biblioteca diferente para enviar la solicitud POST, como el objeto WinHttpRequest en VBA.

    También vale la pena señalar que la capacidad de enviar solicitudes AJAX a través de VBA sin depender de Internet Explorer puede ser limitada, ya que se trata de una tecnología del lado del cliente. Sin embargo, puede haber bibliotecas o métodos alternativos disponibles para llevar a cabo esta tarea.

Comments are closed.