C# HttpWebRequest post提交数据,提交对象
1、客户端方法
//属于客户端 //要向URL Post的方法 public void PostResponse() { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://demo2.cm-force.com/appapi/apiaccount/aa");//这是你要提交的url Encoding encoding = Encoding.UTF8;
//参数少的情况下,直接拼接参数字符串
//string param = "UserName=123&UserPwd=123";//post 参数 /* //这是要提交的model对象 Car c = new Car(); c.Passed = true;//true c.LinkTel = "小测试"; c.CarBrand = "11111111"; c.Loads = 101; c.UserId = 50; c.SortId = 1; c.CarArea = "11111111"; c.CarStateId = 1; c.LinkMan = "1111111111"; c.Sfzh = "141124188789786031"; c.CarNum = "ABCDE1"; c.CarLength = 100; c.DrivingNum = "11111111"; c.State = 1; c.CarId = 0; c.CarOwner = "111111"; c.CarAreaId = 1; c.CarTypeId = 1; c.AddTime = DateTime.Now; */ /*1、如果对象参数比较多的情况下,使用Dictionary字典提交数据,这样比较清晰。(针对对象) 2、如果字段比较少的话,就直接通过拼接参数提交。例如:UserName=123&UserPwd=123 (针对少量参数)*/ //比照上面的Car对象转成Dictionary<string, string>泛型集合 IDictionary<string, string> para = new Dictionary<string, string>(); para.Add("LinkTel", "第二次测试"); para.Add("CarBrand", "1111"); para.Add("Loads", "101"); para.Add("UserId", "50"); para.Add("SortId", "1"); StringBuilder buffer = new StringBuilder();//这是要提交的数据 int i = 0; //通过泛型集合转成要提交的参数和数据 foreach (string key in para.Keys) { if (i > 0) { buffer.AppendFormat("&{0}={1}", key, para[key]); } else { buffer.AppendFormat("{0}={1}", key, para[key]); } i++; } //通过泛型转化得到的提交数据:LinkTel=第二次测试&CarBrand=1111&Loads=101&UserId=50&SortId=1 //其实与上面的直接拼接参数无异, byte[] bs = Encoding.UTF8.GetBytes(buffer.ToString());//UTF-8 string responseData = String.Empty; req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; req.ContentLength = bs.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(bs, 0, bs.Length); reqStream.Close(); } using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) { responseData = reader.ReadToEnd().ToString(); } Response.Write(responseData); } }
2、服务端接收Post的数据
//发布车辆 Post方式接收,接收的是Car model对象 [HttpPost] public JsonResult Caradd(InfoSL_APP.Contract.Logis.Model.Car model) { try { //下面就是您要操作接收回来的Model对象 int b= apibll.Caradd(model); if (b>0) { //发布车辆成功json return Json(sb.ToString()); } else { return resultJson(b.ToString(), "发布车辆添加失败!"); } } catch (Exception ex) { return errorJson(ex.Message.ToString()); } }