HttpClient 调用WebAPI时—传参的三种方式(ASP.NET MVC&CORE均适用)

2022-11-29 16:06:49 浏览数 (1)

代码里有注释:

方法一,传json参数

方法二,传表单参数

方法三,传字节流

代码语言:javascript复制
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;
                    }
                }
            }


        }

0 人点赞