尝试将XML文件发布到MVC RESTful API并反序列化为c#类

时间:2016-05-13 16:40:34

标签: c# xml rest model-view-controller

前端似乎发布很好,我的路由似乎工作,因为我的API似乎得到请求和文件名是有效的。但是,当我尝试await request.Content.ReadAsStreamAsync();时,它似乎没有阅读任何内容而我得到了

Data at the root level is invalid. Line 1, position 1.

反序列化时的

异常...

暂时尝试使用不同的解决方案但没有成功..请帮助。

我尝试的事情:

  • 不同的内容类型
  • 上传不同的webclient方法(uploadstring,uploadfile,uploaddata)
  • 使用WebRequest而不是webclient(我会不断收到不支持的媒体类型消息作为回复)

我的代码:

public string CreateJob()
    {
        string test = "";
        string sURL = "http://" + _domain + _apiRoot + "CreateJob/OrderXML";


        try
        {
            var ms = new MemoryStream();

            using (FileStream src = System.IO.File.Open(@"C:\XML\PageDNAOrderXML.txt", FileMode.Open))
            {
                src.CopyTo(ms);
            }

            using (WebClient wc = new WebClient())
            {
                wc.Headers[HttpRequestHeader.ContentType] = "text/xml";
                wc.Headers[HttpRequestHeader.AcceptEncoding] = "Encoding.UTF8";
                //wc.Headers[HttpRequestHeader.ContentLength] = ms.Length.ToString();                    
                wc.UploadString(sURL, ms.ToString());
            }
        }
        catch (Exception ex)
        {
            test = ex.Message;

        }
        return test;
    }     

RESTful API

 [System.Web.Http.HttpPost]
    public async void CreateJob(string filename)
    {
        string success = "false";
        try
        {
            //XDocument doc = XDocument.Load
            XmlSerializer xmls = new XmlSerializer(typeof(PdnaXmlParse));
            Stream reqStream = await Request.Content.ReadAsStreamAsync();
            PdnaXmlParse res = (PdnaXmlParse)xmls.Deserialize(new XmlTextReader(reqStream));
        }
        catch (Exception ex)
        {
            Console.Write(ex.Message);
        }
}

0 个答案:

没有答案