Pregunta
· 9 hr atrás

Acerca de %Net.HttpRequest

Tengo el siguiente código, con el que pretendo enviar el fichero pepe.XML que está en mi directorio C:\TEMP:

 httprequest=##class(%Net.HttpRequest).%New()
 httprequest.Username="dfgsdgsd"
 httprequest.Password="sdfbnnb"
 httprequest.Port=2222
 httprequest.Server="https://app.net
 httprequest.SetParam("API-Key","jh2871371naou1b82397"
 httprequest.SetParam("content-type", "application/xml"
 httprequest.Post("C:\TEMP\pepe.XML",2)
 response=httprequest.HttpResponse
 !,response
(Los datos no son reales. Supongo que Username, Password y Port no es necesario)

No hace nada, y no se ni si se conecta.

¿Qué hago mal

Product version: Caché 2018.1
$ZV: Cache for Windows (x86-64) 2018.1.11 (Build 112U) Fri May 9 2025 14:38:22 EDT
Comentarios (1)2
Inicie sesión o regístrese para continuar

Hola @Jaume Marcet! 

Echa un vistazo a este código de ejemplo que me ha sugerido nuestro amigo el chatbot de IA:

Class objectscript.postXML
{
    ClassMethod test() {
        Set HTTPRequest = ##class(%Net.HttpRequest).%New()
        Set HTTPRequest.ContentType = "text/xml"
        Set HTTPRequest.NoDefaultContentCharset = 1
        Set HTTPRequest.Server = "wph.foactive.com"    // Specify server address here
        Set HTTPRequest.Location = "/ITOMCZ"           // Specify location or endpoint here
        // Modify headers if necessary
        Do HTTPRequest.RemoveHeader("User-Agent")
        Do HTTPRequest.RemoveHeader("Accept-Encoding")
        Do HTTPRequest.RemoveHeader("Connection")
        Do HTTPRequest.SetHeader("Expect", "100-continue")
        
        // Open XML file and copy its content into the request body
        Set RequestXML = ##class(%Library.File).%New("c:\\path\\to\\your\\file.xml")   // Specify file path here
        Do RequestXML.Open("RS")
        Do HTTPRequest.EntityBody.CopyFrom(RequestXML)
        Do RequestXML.%Close()
        
        // Send the request
        Set sc = HTTPRequest.Post(HTTPRequest.Location)
        
        // Check the response
        If $$$ISOK(sc) {
            Write HTTPRequest.HttpResponse.StatusCode, !
            Write HTTPRequest.HttpResponse.Data.Read(), !
        } Else {
            // Handle errors
            Write "Error in request: ", $System.OBJ.DisplayError(sc), !
        }
    }
}