2011-06-16 61 views
4

我有一個控制器,它看起來像這樣的導入XML到我的網站:手動發佈到一個Asp.Net MVC控制器

[HttpPost] 
    public ActionResult Import(string xml) 
    { 

我有一個獨立的應用程序讀取XML文件,並將其發送到url 。它看起來像這樣:

static void Main(string[] args) 
    { 
     var reader = new StreamReader(@"myfile.xml"); 
     var request = WebRequest.Create("http://localhost:41379/mycontroller/import"); 
     request.Method = "POST"; 
     request.ContentType = "text/xml"; 
     StreamWriter sw = new StreamWriter(request.GetRequestStream()); 
     sw.Write(reader.ReadToEnd()); 
     sw.Close(); 
     var theResponse = (HttpWebResponse)request.GetResponse(); 
     StreamReader sr = new StreamReader(theResponse.GetResponseStream()); 
     var response = sr.ReadToEnd(); 
    } 

控制器得到正確調用,但是當我在那裏休息時,參數爲空。我很確定我只是沒有設置正確的內容類型或類似的東西。對xml進行編碼的正確方法是什麼,以便框架能夠得到它並將其正確地提供給控制器?

+0

你在哪裏將XML內容傳遞給動作? – 2011-06-16 22:39:24

+0

我正在將它寫入請求流。 – captncraig 2011-06-16 22:42:36

+0

但你沒有給它一個名字。它需要是一個正式的名爲HTTP POST參數。 – 2011-06-16 23:02:17

回答

4

爲自己節省很多的痛苦和使用 WebClient.UploadFile

已經導致你走錯了路,我寫了一個控制器和客戶端,似乎很好地工作:

控制器

public class HomeController : Controller 
{ 
    public ActionResult Upload() 
    { 
     XDocument doc; 
     using (var sr = new StreamReader(Request.InputStream)) 
     { 
      doc = XDocument.Load(sr); 
     } 
     return Content(doc.ToString()); 
    } 
} 

客戶

static void Main(string[] args) 
{ 

    var req = (HttpWebRequest)WebRequest.Create("http://host/Home/Upload"); 
    req.Method = "POST"; 
    req.ContentType = "text/xml"; 

    using (var stream = File.OpenRead("myfile.xml")) 
    using (var requestStream = req.GetRequestStream()) { 
     stream.CopyTo(requestStream); 
    } 


    using (var response = (HttpWebResponse) req.GetResponse()) 
    using (var responseStream = response.GetResponseStream()) 
    using (var sr = new StreamReader(responseStream)) 
    { 
     XDocument doc = XDocument.Load(sr); 
     Console.WriteLine(doc); 
    } 


    Console.ReadKey(); 
} 
+0

控制器看起來會接受什麼? – captncraig 2011-06-16 23:59:04

+0

好點。我只能讀取輸入流。我根本不需要這個框架來爲我解析它。我會盡快嘗試。 – captncraig 2011-06-17 14:50:43

+0

工程就像一個魅力。謝謝。 – captncraig 2011-06-17 20:56:17

相關問題