Estoy tratando de crear una llamada SOAP en javascript para consultar nuestra nube para devolver un documento. Esto es para evitar el uso del informe de consulta estándar. Nuestra nube utiliza el inicio de sesión único y el escenario de inicio de sesión con contraseña regular no funcionará para el usuario general. Busco la sintaxis adecuada de una llamada SOAP contra Oracle para descargar documentos del repositorio y la sintaxis adecuada para obtener el token de autorización para enviar a la nube para permitir que se ejecute la llamada SOAP. Actualmente recibo un error 401 de un comando POST pero una llamada GET tiene una respuesta. No estoy seguro de si debo hacer referencia a oraclecloud.com/crmCommonBulkExport/BulkExportService?WSDL oa oraclecloud.com/fscmService/ServiceCatalogService?wsdl. He leído algunas publicaciones similares sobre este tema, pero claramente me estoy perdiendo algo. Cualquier ayuda o consejo es apreciado. El esquema del código con alguna sustitución está debajo y probándolo a través de la consola del navegador".
//Organization instance remove replaced with your-instance var url = "https://your-instance.oraclecloud.com/crmCommonBulkExport/BulkExportService?WSDL"; var xhr = new XMLHttpRequest(); //Response is 401; recieve a repsonse with a GET xhr.open("POST", url,true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { console.log(xhr.status); console.log(xhr.responseText); }}; //SOAP call for attactments var data = `<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/crmCommon/bulkExport/bulkExportServiceV2/types/"> <soapenv:Body> <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> </dsig:KeyInfo> <typ:getAttachmentsForBatch> <typ:batchId>300000024150497</typ:batchId> </typ:getAttachmentsForBatch> </soapenv:Body> </soapenv:Envelope>`; //regualr authorization causes issues because of SSO //xhr.setRequestHeader("Content-Type", "text/xml"); //SSO needed xhr.setRequestHeader('Bearer', '<token>'); xhr.send(data);