Utilizzare il servizio Web REST YAML in ASP.NET
Domanda
Sto usando PandaStream, che invia una notifica REST come YAML alla nostra app ASP.NET. Il servizio web che ho soffocato e restituisce 500 perché tenta di analizzare il contenuto come XML. Come posso interrompere questa analisi? Come posso ottenere il contenuto solo come una grande stringa in modo da poterlo analizzare da solo?
[WebMethod]
//HOWTO? suppress XML parsing
public void UpdateStatus()
{
// HOWTO? get content as string
// parse string as YAML
// ...
}
AGGIORNAMENTO: OK, se utilizzo una normale pagina aspx, come posso ottenere il contenuto POST non elaborato come stringa?
AGGIORNAMENTO 2: posso ottenere il testo:
Stream s = Request.InputStream;
byte[] buffer = new byte[s.Length];
s.Read(buffer, 0, (int)s.Length);
String content = bytesToString(buffer);
... ma viene rovinato. Le linee di apertura dello yaml sono:
---
:video:
:thumbnail: bac01bf0-503a-012b-1406-123138002145.flv_thumb.jpg
:duration: 15900
... e così via, ma nella mia stringa questo diventa:
video=---%20%0a%3avideo%3a%20%0a%20%20%3athumbnail%3a%20bac01bf0-503a-012b-1406-123138002145.flv_thumb.jpg%0a%20%20%3aduration%3a%2015900
Sembra che ASP stia parametrizzando " il corpo POST quando voglio solo le cose grezze. È qualcosa a che fare con il tipo mime?
Soluzione
I servizi Web ASMX possono elaborare SOAP solo in input. Se devi leggere un altro formato, non devi utilizzare un servizio web ASMX.
Usa semplicemente una pagina normale, o un HttpHandler, e fai il tuo analisi.