I reccomend to write a specific class for working with POST.
public class PostRequestParameters
{
public List<PostRequestParameterObject> prms;
public PostRequestParameters()
{
prms = new List<PostRequestParameterObject>();
}
public void AddPair(string id, string val)
{
prms.Add(new PostRequestParameterObject(id, val));
}
public String FormPostData()
{
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < prms.Count; i++)
{
if (i == 0)
{
buffer.Append(System.Net.HttpUtility.UrlEncode(prms[i].id) + "=" + System.Net.HttpUtility.UrlEncode(prms[i].value));
}
else
{
buffer.Append("&" + System.Net.HttpUtility.UrlEncode(prms[i].id) + "=" + System.Net.HttpUtility.UrlEncode(prms[i].value));
}
}
return buffer.ToString();
}
}
public class PostRequestParameterObject
{
public string id;
public string value;
public PostRequestParameterObject(string id, string val)
{
this.id = id;
this.value = val;
}
}
Then you can use it to send POST data:
private void buttonSend_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
WebClient wc = new WebClient();
wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted);
wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
wc.Encoding = Encoding.UTF8;
PostRequestParameters prms = new PostRequestParameters();
prms.AddPair("par1", textBox1.Text);
prms.AddPair("par2", textBox2.Text);
prms.AddPair("par3", GetMPar3());
wc.UploadStringAsync(new Uri(url), "POST", prms.FormPostData(), null);
}
// you can parse response here
private void wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
// do something
}