Pregunta

Tengo un XMLTextWriter escribiendo en un Stream de una WebRequest. Todo funciona como debería:

    Dim wr As WebRequest = WebRequest.Create("https://wwwcie.ups.com/ups.app/xml/ShipAccept")
    With wr
        .Method = "POST"
        .ContentType = "application/x-www-form-urlencoded"
    End With
    Dim requestStream As Stream = wr.GetRequestStream
    Using requestStream

        Dim x As New XmlTextWriter(requestStream, Encoding.UTF8)

        Using x
            With x

                .WriteStartDocument()
                'XML

                .WriteStartElement("ShipmentAcceptRequest")
                'ShipmentAcceptRequest

                .WriteStartElement("Request")
                'Request

                .WriteElementString("RequestAction", sar.Request.RequestAction)

                '/Request
                .WriteEndElement()

                .WriteElementString("ShipmentDigest", sar.ShipmentDigest)

                '/ShipmentAcceptRequest
                .WriteEndElement()

                '/XML
                .WriteEndDocument()

                .Flush()

            End With
        End Using

    End Using

¿Cómo puedo interceptar este XML que se está escribiendo como un tipo de documento XML? Traté de engancharlo de la transmisión, pero eso me dio un "La transmisión no admite lectura". excepción (que no me sorprendió).

Gracias

¿Fue útil?

Solución

No creo que pueda interceptar la transmisión, porque por definición es:

  

un escritor que proporciona una forma rápida, no almacenada en caché y solo hacia adelante de generar secuencias

sin caché y solo hacia adelante son sus problemas allí.

Entonces ... ¿hay algo que te impida hacerlo en orden inverso?

Escriba su XML en un XmlDocument, y cuando haya terminado, llame a XmlDocument.WriteTo para enviar el XML a un XmlWriter (en este caso, su XmlTextWriter se enviará a su secuencia de solicitud).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top