Puede utilizar HttpListener para procesar HTTP POST entrantes, puede seguir prácticamente cualquier tutorial que encuentre para el oyente. Así es como lo estoy haciendo (tenga en cuenta que esto es síncrono, para manejar más de 1 solicitud a la vez, tendrá que utilizar hilos o al menos los métodos asincrónicos.)
public void RunServer()
{
var prefix = "http://*:4333/";
HttpListener listener = new HttpListener();
listener.Prefixes.Add(prefix);
try
{
listener.Start();
}
catch (HttpListenerException hlex)
{
return;
}
while (listener.IsListening)
{
var context = listener.GetContext();
ProcessRequest(context);
}
listener.Close();
}
private void ProcessRequest(HttpListenerContext context)
{
// Get the data from the HTTP stream
var body = new StreamReader(context.Request.InputStream).ReadToEnd();
byte[] b = Encoding.UTF8.GetBytes("ACK");
context.Response.StatusCode = 200;
context.Response.KeepAlive = false;
context.Response.ContentLength64 = b.Length;
var output = context.Response.OutputStream;
output.Write(b, 0, b.Length);
context.Response.Close();
}
La parte principal que recibe el XML a partir de la solicitud es la siguiente línea:
var body = new StreamReader(context.Request.InputStream).ReadToEnd();
esto le da al cuerpo de la petición HTTP, que debe contener el código XML. Probablemente pueda enviarlo directamente a cualquier biblioteca XML que pueda leer de una transmisión, pero asegúrese de ver excepciones si una solicitud HTTP perdida también se envía a su servidor.