Restful Web Api Get 和 Post 請求的引數設定
阿新 • • 發佈:2019-01-09
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(); }