2009-07-08 24 views
5

Ok, así que para empezar, no estoy usando ningún tipo de servicio web. En este momento no sé mucho sobre la aplicación que recibe el XML que no sea el que lo recibe. Gran ayuda allí lo sé. No escribí la aplicación de recepción, pero mi empresa no tiene ninguna forma útil de probar la fase de transmisión de XML.Enviar XML a través de HTTP Publicar en IP: Puerto

Básicamente quiero enviar un documento XML como este ...

<H2HXmlRequest class="myClass"> 
<Call> 
    <CallerID></CallerID> 
    <Duration>0</Duration> 
</Call> 
<Terminal> 
    <CancelDate></CancelDate> 
    <ClerkLoginTime></ClerkLoginTime> 
</Terminal> 
<Transaction> 
    <AcceptedCurrency></AcceptedCurrency> 
    <AccountId>6208700003</AccountId> 
</Transaction> 
</H2HXmlRequest> 

... a la aplicación que realmente no sé mucho acerca. No es nada lujoso y con la ayuda adecuada probablemente podría encontrar más información. Pero lo que estoy buscando hacer es crear algún tipo de aplicación C# Forms que pueda responder a esa solicitud, enviarla de nuevo usando una IP y un puerto, y con suerte ver que algo suceda.

+0

Estás mezclando muchos conceptos aquí. El título dice http POST pero la pregunta menciona la aplicación Forms y la envía a través de un puerto TCP. Entonces, ¿cuál es? una aplicación web o aplicación WinForms? ¿Y el XML es algo que alguien pegará allí? –

+0

No, es una aplicación de WinForms que puede hacer una publicación de HTTP. – Stevus

Respuesta

10

La forma recomendada de realizar solicitudes web simples es utilizar el objeto WebClient.

He aquí un fragmento de código:

// assume your XML string is returned from GetXmlString() 
string xml = GetXmlString(); 


// assume port 8080 
string url = new UriBuilder("http","www.example.com",8080).ToString();  


// create a client object 
using(System.Net.WebClient client = new System.Net.WebClient()) { 
    // performs an HTTP POST 
    client.UploadString(url, xml); 

} 
+0

¿Debería ser System.Net en lugar de System.Web? – Stevus

+0

@Steven: ¡sí! Gracias. –

+0

No olvides eliminar el atributo 'encoding' de la declaración xml (por ejemplo,' '), O hacer que el atributo de codificación coincida con la codificación de la propiedad' WebClient.Encoding' (por ejemplo, '') ** Nota: ** no sé cuál es la codificación predeterminada de 'WebClient', pero espero que sea de alguna forma de Unicode. –

0

Si usted tiene un IP y el puerto por la que no está tratando de XML a través de TCP/IP. En C#, puede hacerlo utilizando System.Net.Sockets clase TCPClient. Esta clase tiene los métodos Conectar, enviar y recibir, para conectarse con IP y puerto, luego enviar mensaje y esperar para recibir el mensaje.

+2

¿Por qué no? No deberías volver a inventar la rueda. Ya hay una biblioteca de código comprobado, comprobado de seguridad y mantenido para enviar datos a un servidor http. Tan interesante como sería escribir tú mismo los códigos, es demasiado fácil tener errores o agujeros de seguridad. –

Cuestiones relacionadas