• 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());
                }
            }
  • 相关阅读:
    物理删除文件 业务层
    页面在本机可以显示,其它机器不可以看到页面
    我对asp.net并行请求数量的理解
    分布式缓存Memcached
    任意两个对象赋值,用Spring.Objects.ObjectWrapper效率比直接反射还慢?
    在Linux(RHEL5.5)里用mono2.8.2和jexus4.1运行.net3.5下的MVC2.0过程记录
    Nhibernate连接oracle数据库,主键ID用序列生成时连接数据库IO次数分析
    Sqlserver别太信任SysComments表中的text字段
    .net4.0线程池取消执行的实际应用
    spring.net、castle windsor、unity实现aop、ioc的方式和简单区别
  • 原文地址:https://www.cnblogs.com/pingming/p/4683659.html
Copyright © 2020-2023  润新知