Me disculpo de antemano por esta pregunta mal redactada.
Estoy reescribiendo una prueba E2E anterior que realiza un POST de un documento XML en un sitio interno usando vbScript. Con WinHttpRequest y Microsoft.XMLDOM, los datos se aceptan y aparecen como se esperaba en el sitio web. Sin embargo, cuando realizo la "misma" operación usando Cypress obtengo resultados diferentes.
Mi pregunta: ¿Hay alguna diferencia en la forma en que estas dos tecnologías realizan la operación POST o me falta algo en el código de Cypress?
¡Gracias de antemano por cualquier consejo!
EBV
Dim xmlhttp, oXML Set xmlhttp = CreateObject("Microsoft.XMLHTTP") xmlhttp.open "POST", "https://InternalWebSite.com/Orders/CXMLOrder.aspx", False xmlhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8" xmlhttp.setRequestHeader "Content-length", "1000" xmlhttp.setRequestHeader "Connection", "close" xmlhttp.setRequestHeader "soapAction", "" Set oXML = CreateObject("Microsoft.XMLDOM") oXML.async = False oXML.load(localPath & "\MyOrderFile.xml") xmlhttp.send(oXML)CIPRÉS
it('Post Order File to Site', () => { const myOrderFile = 'C:\\Automation\\MyOrderFile.xml' cy .readFile(myOrderFile) .then(function (text) { cy.log(text) postXML(text) }) }) function postXML(text) { return cy.request({ url: 'https://InternalWebSite.com/Orders/CXMLOrder.aspx', method: 'POST', body: text, headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'content-length': '1000', 'connection': 'close', 'soapAction': '' } } )}La solución terminó siendo bastante simple.
En el código VBS original, la " longitud del contenido " se estableció en 1000; supuse que si funcionaba para VBS, también funcionaría para Cypress. Resulta que establecer " contenido-longitud " en función de la longitud real de la carga útil XML fue el truco.
De: 'longitud del contenido': '1000',
Hasta: 'longitud del contenido': texto.longitud,