HttpClient 调用WebAPI时,传参的三种方式
public void Post() { //方法一,传json参数 var d = new { username = " ", password = " ", grant_type = "password", appcode = " ", companyid = " ", version = "1.0", }; var data = JsonConvert.SerializeObject(d); HttpContent httpContent = new StringContent(data); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (HttpClient httpClient = new HttpClient()) { string responseJson = httpClient.PostAsync("http://192.168.8.178:1646/token", httpContent) .Result.Content.ReadAsStringAsync().Result; } //方法二,传表单参数 FormUrlEncodedContent formContent = new FormUrlEncodedContent(new Dictionary<string, string>() { {"username"," " }, {"password"," " }, {"grant_type","password" }, {"appcode"," " }, {"companyid"," " }, {"version","1.0" }, }); using (HttpClient httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"); httpClient.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); HttpResponseMessage response = httpClient.PostAsync("http://192.168.8.178:1646/token", formContent).Result; if (response.IsSuccessStatusCode) { string result = response.Content.ReadAsStringAsync().Result; } } ///方法三,传字节流 using (HttpClient http = new HttpClient()) { http.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"); http.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); HttpResponseMessage message = null; string xx = @"{ ""username"":"" "",""password"":"" "",""grant_type"":""password"",""appcode"":"" "",""companyid"":"" "",""version"":""1.0""}"; using (Stream dataStream = new MemoryStream(Encoding.Unicode.GetBytes(xx) ?? new byte[0])) { using (HttpContent content = new StreamContent(dataStream)) { content.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var task = http.PostAsync("http://192.168.8.178:1646/token", content); message = task.Result; } } if (message != null && message.StatusCode == System.Net.HttpStatusCode.OK) { using (message) { string result = message.Content.ReadAsStringAsync().Result; } } } }