发送XML请求并在c#中导出

本文关键字:XML 请求 发送 | 更新日期: 2023-09-27 18:15:07

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

至于客户端,我用XMLHttpRequest发送了它。至于服务器端,我不知道如何请求XML,也不知道如何用这种格式编写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的方式是否正确

发送XML请求并在c#中导出

是的,如果你正在使用ASP,有很多选项可供你选择。.net/c#后端:http://asp.net/mvc

  • 您可以简单地将xml字符串作为表单post变量发送。在这种情况下,您可以简单地为mvc动作方法提供一个与表单值同名的字符串参数。
  • 或者,如果你是作为text/xml发布,你可以创建一个自定义模型粘合剂:https://lostechies.com/jimmybogard/2011/06/24/model-binding-xml-in-asp-net-mvc-3/

一旦有了数据,就可以使用System.IO api将文件写入服务器,或者对该数据执行任何其他需要的操作。

您可以在这里获得更多关于模型绑定的信息:https://docs.asp.net/en/latest/mvc/models/model-binding.html


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


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