发送XML请求并将其导出为C#

时间:2016-10-26 14:03:23

标签: c# ajax xml request

有没有办法可以通过AJAX发送XML请求,然后在服务器端捕获它并在文本文件中用C#编写它(原始XML请求)?

至于客户端,我已经发送了XMLHttpRequest。 至于服务器端,我不知道如何请求XML以及如何以该格式编写它。

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);

服务器端,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]);
        }
    }  

但我在文件中没有得到任何内容,因为我不确定我是否以正确的方式获取XML。

1 个答案:

答案 0 :(得分:0)

是的,如果您在后端使用ASP.NET / C#,可以使用许多选项:http://asp.net/mvc

获得数据后,您可以使用System.IO API将文件写入服务器,或者使用该数据执行其他任何操作。

您可以在此处获取有关模型绑定的更多信息:https://docs.asp.net/en/latest/mvc/models/model-binding.html

如果您使用的是webforms,则可以使用事件处理程序简单地处理页面代码隐藏中的服务器端组件:
https://msdn.microsoft.com/en-us/library/6w2tb12s.aspx

编辑:为了响应您添加代码的编辑...,您应该查看InputStream属性的Request属性。您将xml发布为text/xml,这意味着您必须阅读请求正文以获取内容:
https://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream(v=vs.110).aspx