Możesz użyć HttpListener do przetwarzania przychodzących HTTP POST, możesz prawie wykonać dowolny samouczek, który znajdziesz dla słuchacza. Oto jak ja to robię (uwaga to synchronicznych, aby obsługiwać więcej niż 1 wniosek na raz, będziesz chciał używać wątków lub przynajmniej metody async.)
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();
}
Główną część, która trafia XML z żądania to linia:
var body = new StreamReader(context.Request.InputStream).ReadToEnd();
Daje to treść żądania HTTP, które powinno zawierać Twój XML. Prawdopodobnie możesz przesłać go bezpośrednio do dowolnej biblioteki XML, która może czytać ze strumienia, ale pamiętaj, aby zwrócić uwagę na wyjątki, jeśli na serwer zostanie wysłane również bezpańskie żądanie HTTP.