2012-04-23 23 views
3

我有用C#編寫的Windows應用程序。這個應用程序將被部署到我的用戶的桌面。它將與已經創建的後端進行交互。後端是寫在ASP.NET MVC 3,它包含了許多GET和POST操作如下所示:通過C#獲取併發布到ASP.NET MVC

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult GetItem(string id, string caller) 
{ 
    // Do stuff 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult SaveItem(string p1, string p2, string p3) 
{ 
    // Do stuff 
} 

我們小組中的網頁開發者成功地通過JQuery這些操作交互。所以我知道他們工作。但我需要弄清楚如何從我的Windows C#應用程序與它們進行交互。我正在使用WebClient,但遇到了一些性能問題,因此我被諮詢使用WebRequest對象。在誠實地努力嘗試這個,我試過如下:

WebRequest request = HttpWebRequest.Create("http://www.myapp.com/actions/AddItem"); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.BeginGetResponse(new AsyncCallback(AddItem_Completed), request); 

我的問題是,我不知道如何真正的數據(參數值)送回到我的終點。如何將參數值發送回我的GET和POST操作?有人能給我一些幫助嗎?謝謝!

回答

1

那麼,與WebClient最簡單的例子是這樣的:

NameValueCollection postData = new NameValueCollection(); 
postData["field-name-one"] = "value-one"; 
postData["field-name-two"] = "value-two"; 

WebClient client = new WebClient(); 
byte[] responsedata = webClient.UploadValues("http://example.com/postform", "POST", postData); 

你試過嗎?

+0

我無法使用WebClient。說來話長。但我真的需要使用WebRequest。 – 2012-04-23 17:24:29

4

一種方法是將輸入寫入請求流。您需要將輸入序列化爲字節數組 請參閱下面的示例代碼

 string requestXml = "someinputxml"; 
     byte[] bytes = Encoding.UTF8.GetBytes(requestXml); 

     var request = (HttpWebRequest)WebRequest.Create(url); 
     request.Method = "POST"; 
     request.ContentLength = bytes.Length; 
     request.ContentType = "application/xml"; 

     using (var requestStream = request.GetRequestStream()) 
     { 
      requestStream.Write(bytes, 0, bytes.Length); 
     } 

     using (var response = (HttpWebResponse)request.GetResponse()) 
     { 
      statusCode = response.StatusCode; 

      if (statusCode == HttpStatusCode.OK) 
      {     
       responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
      } 
     } 
+0

也許我很困惑。但我知道我的web開發人員正在通過jQuery將json提交回我的操作。我如何通過WebRequest提交相同類型的信息? – 2012-04-23 17:26:57

+0

您需要將數據序列化爲JSON字符串。看看使用JSON.net。然後,您將該字符串轉換爲一個字節數組,類似於testuser對其變量「requestXml」所做的操作。 – villecoder 2012-04-23 17:46:29