WebApi HttpWebRequest GET POST 传值
action
public class EasyModelByRequestUrlController : ApiController { // GET: api/EasyModelByRequestUrl [HttpGet] public string Action1(string name,string sex,int age) { return $"GET请求 姓名{name},性别{sex},年龄{age}"; } [HttpPost] // POST: api/EasyModelByRequestUrl public string Post([FromBody]string name, int age) { return $"Post请求 姓名{name},年龄{age}"; } }
请求
private void button1_Click(object sender, EventArgs e) { string str = "张三"; #region POST action那里,frombody只能取值一次,第二次就会报错 //Byte[] bytes = Encoding.UTF8.GetBytes("=123"); //// 注意,post一个string参数的时候,采取 =XXX,type application/x-www-form-urlencoded;charset=utf-8,才能取到值 ////注意 action那里,frombody只能取值一次,第二次就会报错 //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:9892/api/EasyModelByRequestUrl?age=18"); // 传递多个参数,只有一个参数是POST传递,其他通过URL传递,同时action 必须指定 【frombody】 //request.Method = "POST"; //request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; //request.ContentLength = bytes.Length; #endregion #region 采用JSON传值的时候,contentType 采用 application/json;charset=utf-8 ,传递的值需要进行 JSON转换 JsonConvert.SerializeObject(str); string jsonstr = JsonConvert.SerializeObject(str); Byte[] bytes = Encoding.UTF8.GetBytes(jsonstr); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:9892/api/EasyModelByRequestUrl?age=18"); request.Method = "POST"; request.ContentType = "application/json;charset=utf-8"; request.ContentLength = bytes.Length; #endregion using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader=new StreamReader( response.GetResponseStream())) { string result=reader.ReadToEnd(); this.textBox1.Text = result; } } private void button2_Click(object sender, EventArgs e) { HttpWebRequest request=(HttpWebRequest) WebRequest.Create("http://localhost:9892/api/EasyModelByRequestUrl?name=张三&sex=男&age=16"); request.Method = "GET"; //通过URL传值的话,可以不指定 contentType //request.ContentType = "text/html;charset=utf-8"; //request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; HttpWebResponse response = (HttpWebResponse) request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); this.textBox1.Text = result; } }
结果
POST
GET