加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何将XML作为POST传递给ASP MVC .NET中的Action

发布时间:2020-12-15 20:17:14 所属栏目:asp.Net 来源:网络整理
导读:我正在为我的ASP MVC项目提供一个简单的RESTful API.我不会控制这个API的客户端,他们将通过一个POST方法传递一个 XML,该方法将包含在服务器端执行某些操作所需的信息,并提供一个带有该操作结果的XML.我没有发回XML的问题,问题是通过POST接收XML.我已经看到一
我正在为我的ASP MVC项目提供一个简单的RESTful API.我不会控制这个API的客户端,他们将通过一个POST方法传递一个 XML,该方法将包含在服务器端执行某些操作所需的信息,并提供一个带有该操作结果的XML.我没有发回XML的问题,问题是通过POST接收XML.我已经看到一些 JSON的例子,但是由于我不会控制我的客户端(从我的角度来看,它可能是一个telnet),我不认为JSON将会工作.我对么?

我看到一些例子,客户端只需将正确的格式格式构造为请求正文的一部分,然后ASP解析消息,数据可用作FormCollection(?param1 = value1& param2 = value2&等).但是,我想传递纯XML作为邮件正文的一部分.

谢谢你的帮助,

解决方法

@Freddy – 喜欢你的方法,并用以下代码改进它,以简化流读取:
public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContextBase httpContext = filterContext.HttpContext;
        if (!httpContext.IsPostNotification)
        {
            throw new InvalidOperationException("Only POST messages allowed on this resource");
        }

        Stream httpBodyStream = httpContext.Request.InputStream;
        if (httpBodyStream.Length > int.MaxValue)
        {
            throw new ArgumentException("HTTP InputStream too large.");
        }

        StreamReader reader = new StreamReader(httpBodyStream,Encoding.UTF8);
        string xmlBody = reader.ReadToEnd();
        reader.Close();

        filterContext.ActionParameters["message"] = xmlBody;

        // Sends XML Data To Model so it could be available on the ActionResult
        base.OnActionExecuting(filterContext);
    }

然后在Controller中,您可以使用字符串访问xml:

[RestAPIAttribute]    
public ActionResult MyActionResult(string message)    
{         

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读