Restful Web Api Get 和 Post 请求的参数设置

1、Get请求(用HttpClient或HttpWebRequest)

[HttpGet]
        public int Get(int id)
        {
            return id;
        }

static void Main(string[] args)
        {
            string url = "http://localhost:46090/api/Ticket/3";//直接在url后面带上参数
            HttpClient client = new HttpClient();
            HttpResponseMessage message = client.GetAsync(url).Result;
            string result =message.Content.ReadAsStringAsync().Result;//3
       }

2、Post 请求:

[API的post方法的参数里面必须添加[FromBody]特性,并且只能有一个参数,要传递多个参数的时候把参数封装成一个类来传递:

       [HttpPost]
        public IHttpActionResult Post([FromBody]string last)
        {
            Person p = new Controllers.Person() { LastName = last, FirstName = "Longxi" };
            return Json(p);
        }
  static void Main(string[] args)
        {
            string url = "http://localhost:46090/api/Ticket";

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "Post";
            request.ContentType = "application/json";
            //string strContent = "lastName=2&firstName=444&middleName=5555";
            string strContent = @"tytt";//只传递一个参数时候,不需要参数名,直接对该值进行json序列化就行
            strContent = JsonConvert.SerializeObject (strContent);
            byte[] buffer = Encoding.UTF8.GetBytes(strContent);
            request.ContentLength = buffer.Length;
            using (Stream dataStream = request.GetRequestStream())
            {

                dataStream.Write(buffer, 0, buffer.Length);

            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (StreamReader dataStream = new StreamReader(response.GetResponseStream()))
            {
                var result = dataStream.ReadToEnd();
                Person p = JsonConvert.DeserializeObject<Person>(result);
                Console.WriteLine(p.FirstName+" "+p.LastName);
            }
}

   [HttpPost]
        public IHttpActionResult Post([FromBody]Person person)
        {
            return Json(person);
        }

static void Main(string[] args)
        {
            string url = "http://localhost:46090/api/Ticket";

            //HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            //request.Method = "Post";
            //request.ContentType = "application/json";
            string strContent = "lastName=2&firstName=444&middleName=5555";
            string strContent = @"tytt";
            strContent = JsonConvert.SerializeObject (strContent);
            //var requestJson = JsonConvert.SerializeObject(new { LastName = "354353",FirstName="Longxi"});
            //byte[] buffer = Encoding.UTF8.GetBytes(requestJson);
            //request.ContentLength = buffer.Length;
            //using (Stream dataStream = request.GetRequestStream())
            //{

            //    dataStream.Write(buffer, 0, buffer.Length);

            //}
            //HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //using (StreamReader dataStream = new StreamReader(response.GetResponseStream()))
            //{
            //    var result = dataStream.ReadToEnd();
            //    Person p = JsonConvert.DeserializeObject<Person>(result);
            //    Console.WriteLine(p.FirstName+" "+p.LastName);
            //}

            Uri serviceReq = new Uri(url);
            HttpClient client = new HttpClient();
            //string strContent = @"{""lastName"":""2"",""firstName"":""444"",""middleName"":""5555""}";
            var requestJson = JsonConvert.SerializeObject(new { LastName = "354353", FirstName = "bbb" });
            HttpContent content = new StringContent(requestJson);//(@"{ ""lastName"":""2"",""firstName"":""444"",""middleName"":""5555""}");
            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            // Send a request asynchronously continue when complete 
            client.PostAsync(serviceReq, content).ContinueWith(
                (requestTask) =>
                {
                    // Get HTTP response from completed task. 
                    HttpResponseMessage response = requestTask.Result;

                    // Check that response was successful or throw exception 
                    response.EnsureSuccessStatusCode();

                    // Read response asynchronously as JsonValue and write out top facts for each country 
                    response.Content.ReadAsStringAsync().ContinueWith(
                        (readTask) =>
                        {
                            Person p = JsonConvert.DeserializeObject<Person>(readTask.Result);
                            Console.WriteLine(p.FirstName+" "+p.LastName);

                        });
                });
            Console.ReadKey();
        }




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值