2012-04-23 14 views
3

私はC#で書かれたWindowsアプリケーションを持っています。このアプリは私のユーザーのデスクトップに展開されます。既に作成されているバックエンドと対話します。ここに示すように、バックエンドは、それはGETとPOST操作の数を公開するASP.NET MVC 3で書かれている:私のチームにC#でASP.NET MVCにGETとPOST

[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 
} 

Web開発者が正常に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操作に戻すにはどうすればよいですか?誰かが私に助けを与えることができますか?ありがとうございました!

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); 

あなたはこれを試してみました:

答えて

1

まあ、WebClientで最も簡単な例では、このようなものになるだろうか?

+0

私はWebClientを使用できません。長い話だけれども。しかし、私は本当にWebRequestを使う必要があります。 –

4

1つの方法は、入力ストリームに要求を書き込むことです。入力をバイト配列にシリアライズする必要があります サンプルコードを参照してください

 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

多分私は混乱しています。しかし、私は自分のウェブ開発者がjsonを介してjsonを自分のアクションに戻していることを知っています。 WebRequestを介して同じ種類の情報を提出するにはどうすればよいですか? –

+0

データをJSON文字列にシリアル化する必要があります。 JSON.netを使って調べてみてください。次に、testuserが変数 "requestXml"に行っているのと同様に、その文字列をバイト配列に変換します。 – villecoder

関連する問題