Like this:
string requestData = "{"c": {"Make":"Ford","Model":"Mustang"}, "email": "[email protected]", "phone": "1111"}";
Or even better using a JavascriptSerializer:
using System;
using System.Net;
using System.Text;
using System.Web.Script.Serialization;
class Program
{
static void Main()
{
var serializer = new JavaScriptSerializer();
string requestData = serializer.Serialize(new
{
c = new
{
make = "Ford",
model = "Mustang"
},
email = "[email protected]",
phone = "1111"
});
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
var result = client.UploadData("http://receiving.url/showdata", Encoding.UTF8.GetBytes(requestData));
Console.WriteLine(Encoding.UTF8.GetString(result));
}
}
}
which will take care of properly JSON serializing your object as if you are using those string concatenations your request might break easily if the data contains some special characters.
Oh, and before I forget: use view models.
So instead of:
[HttpPost]
public JsonResult showdata(Car c, string email, string phone)
{
...
}
you should definitely be having:
[HttpPost]
public ActionResult ShowData(ShowDataViewModel data)
{
...
}
and then:
string requestData = serializer.Serialize(new
{
make = "Ford",
model = "Mustang",
email = "[email protected]",
phone = "1111"
});
And another remark: you don't need JsonRequestBehavior.AllowGet
when returning your JSON as you have decorated your controller action with [HttpPost]
so this action can never be invoked with a GET verb.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…