2016-10-26 1 views
1

Gibt es eine Möglichkeit, XML-Anfrage über AJAX zu senden und dann auf der Serverseite abzufangen und mit C# in die Textdatei zu schreiben (die ursprüngliche XML-Anfrage)?XML-Anfrage senden und in C# exportieren

Wie für Client-Seite, habe ich es mit XMLHttpRequest gesendet. Was Serverseite angeht, weiß ich nicht, wie man XML anfordert und wie man es in diesem Format schreibt.

var xmlData = '<AcquireLicense xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols"><challenge><Challenge xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages"><LA xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData" xml:space="preserve"><Version>1</Version><ContentHeader><WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0"><DATA><PROTECTINFO><KEYLEN>16</KEYLEN><ALGID>AESCTR</ALGID></PROTECTINFO>...'; 

       var xmlhttp = new XMLHttpRequest(); 
       xmlhttp.open('POST', 'test.aspx', true); 
       xmlhttp.onreadystatechange = function() { 
        if (xmlhttp.readyState == 4) { 
         if (xmlhttp.status == 200) { 
          alert("OK"); 
         } else { 
          alert("error: status: " + xmlhttp.status + " xmlhttp.readyState: " + xmlhttp.readyState); 
         }       
        }      
       } 
       xmlhttp.setRequestHeader('Content-Type', 'text/xml'); 
       xmlhttp.send(xmlData); 

Server-Seite, WebForm test.aspx:

using (System.IO.StreamWriter writer = new System.IO.StreamWriter("c:\\test.txt")) 
    { 
     foreach (String key in Request.Form.AllKeys) 
     { 
      writer.WriteLine("Key: " + key + " Value: " + Request.Form[key]); 
     } 
    } 

Aber ich habe nichts in der Datei bekommen, weil ich nicht sicher bin, dass ich die XML, den richtigen Weg bin holen.

+1

versuchen und sehen, wenn irgendwelche Probleme auftreten, können Sie hier stellen. – mybirthname

+0

Ich habe es gesendet, aber ich habe Probleme mit dem Server Seitenteil, ich weiß nicht, wie es geht – Dalibor

+0

Zeigen Sie den Code, den Sie ein Problem haben. – mybirthname

Antwort

0

Ja, es gibt viele Optionen zur Verfügung, wenn Sie ASP.NET/C# im Backend verwenden: http://asp.net/mvc

  • Sie einfach die XML-Zeichenfolge als eine Form post-Variable senden könnte. In diesem Fall können Sie einfach einen Zeichenfolgenparameter für Ihre MVC-Aktionsmethode mit demselben Namen wie den Formularwert angeben.
  • Oder, wenn Sie als text/xml Mitteilung verfassen, können Sie ein benutzerdefiniertes Modell Binder erstellen: https://lostechies.com/jimmybogard/2011/06/24/model-binding-xml-in-asp-net-mvc-3/

Nachdem Sie die Daten haben, können Sie die System.IO APIs verwenden, um die Datei auf den Server zu schreiben, oder zu tun was auch immer sonst brauchst du mit diesen Daten.

Sie können mehr Informationen über Modell bekommen hier Bindung: https://docs.asp.net/en/latest/mvc/models/model-binding.html


Wenn Sie Webformulare verwenden, können Sie einfach die serverseitige Komponente in der Code-Behind-Seite behandeln einen Event-Handler mit:
https://msdn.microsoft.com/en-us/library/6w2tb12s.aspx


bearbeiten: Als Reaktion auf Ihre Bearbeitung, die Code hinzugefügt ... sollten Sie einen Blick auf diewerfenEigentum der Request Eigenschaft. Sie veröffentlichen die XML als text/xml, was bedeutet, dass Sie die Anfrage Körper zu lesen, den Inhalt zu erhalten:
https://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream(v=vs.110).aspx

+0

Danke, gibt es eine Möglichkeit, es in einem Webformular zu tun? – Dalibor

+0

@Dalibor, bearbeitet die Antwort mit Informationen über die Behandlung von Ereignissen in einer Webforms-Seite :) –

+0

@Dalibor, fügte einige zusätzliche Informationen als Reaktion auf Ihre Bearbeitung –

Verwandte Themen