代码之家  ›  专栏  ›  技术社区  ›  Orion

将XML发布到MVC控制器C#

  •  1
  • Orion  · 技术社区  · 6 年前

    我试图将xml从www.domain1.com发布到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#

    1 回复  |  直到 6 年前
        1
  •  0
  •   Orion    6 年前

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

    现在都修好了。