【问题标题】:Post XML to MVC Controller C#将 XML 发布到 MVC 控制器 C#
【发布时间】:2018-06-26 00:36:26
【问题描述】:

我正在尝试将来自 www.domain1.com 的 XML 发布到 www.domain2.com 中的控制器。

这是我的代码:

www.domain2.com

[HttpPost]
        public ActionResult FetchProductsXML()
        {
            Response.ContentType = "text/xml";

            StreamReader reader = new StreamReader(Request.InputStream);
            String xmlData = reader.ReadToEnd();

            var products = _productService.SearchProducts(showHidden: false);
            var xml = _exportManager.ExportProductsToXml(products);

            return this.Content(xml, "text/xml");
        }

然后在 www.domain1.com 我发布如下..

private string getProductLIstXML()
    {
        ASCIIEncoding encoding = new ASCIIEncoding();

        string SampleXml = "<testXml>test</testXml>";

        try
        {
            byte[] data = encoding.GetBytes(SampleXml);

            string url = "http://www.domain2.com/products-xml";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            byte[] bytes;
            bytes = System.Text.Encoding.ASCII.GetBytes(SampleXml);
            request.ContentType = "text/xml; encoding='utf-8'";
            request.ContentLength = bytes.Length;
            request.Method = "POST";
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(bytes, 0, bytes.Length);
            requestStream.Close();
            HttpWebResponse response;
            response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                Stream responseStream = response.GetResponseStream();
                string responseStr = new StreamReader(responseStream).ReadToEnd();
                return responseStr;
            }
            return null;

        }
        catch (WebException webex)
        {
            return webex.ToString();
        }
    }

RouteProvider 类中我的自定义路由

   routes.MapLocalizedRoute("FetchProductsXML",
                            "products-xml",
                            new { controller = "Product", action = "FetchProductsXML" },
                            new[] { "Nop.Web.Controllers" });

我得到的错误是

System.Net.WebException: The remote server returned an error: (404) Not Found.
   at System.Net.HttpWebRequest.GetResponse()

我遵循了以下 SOQ 中的示例

How to POST XML into MVC Controller? (instead of key/value)

HTTP post XML data in C#

【问题讨论】:

  • 您可以发布 products-xml 端点的代码吗?那是它找不到的部分。
  • @VicF products-xml 用于 FetchProductsXML 操作。我的 RouteConfig 文件中有此设置。我不确定是否要设置端点?我以为这就是我需要做的一切?
  • 尝试将FetchProductsXML 更改为HttpGet 并查看是否可以访问api url。您的路由可能不正确。
  • @JohnEphraimTugado 我试过了,还是什么都没做:(
  • 我已更新我的问题以包含自定义路线

标签: c# asp.net-mvc


【解决方案1】:

经过漫长的一夜,我意识到我的方法在错误的类中:(

现在全部修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 2017-01-01
    • 2017-06-22
    • 2012-10-03
    • 1970-01-01
    • 2013-01-13
    • 2017-06-02
    • 2012-11-26
    相关资源
    最近更新 更多