1. 程式人生 > >Restful Web Api Get 和 Post 請求的引數設定

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();
        }