WebApi系列~通过HttpClient来调用WebApi接口
webapi运行原理

webapi运行原理WebAPI是一种基于RESTful架构风格的API,它使用HTTP协议进行数据传输。
WebAPI是一种通用的API,可以接收来自任何客户端的请求。
WebAPI可以由任何编程语言编写,包括Java、Python、Ruby 和C#等。
WebAPI的运行原理WebAPI工作的基本原理是,客户端发送请求,服务器接收请求并返回数据。
在请求和响应之间,服务器根据请求中包含的数据执行相应的操作。
WebAPI的请求通常是HTTP请求,这意味着客户端需要发送一个HTTP请求给服务器,服务器可以使用HTTP响应来返回数据。
WebAPI的架构WebAPI建立在RESTful架构风格上,它使用HTTP协议进行数据传输。
RESTful架构风格是一种面向资源的架构,它使用HTTP协议的GET、POST、PUT、DELETE等方法来操作资源。
WebAPI的架构包括以下组件:1.资源:WebAPI是基于RESTful架构风格的API,它的每个API 都对应着一个资源。
资源可以是一张图片、一篇文章、一段音频或任何其他类型的数据。
2.操作:WebAPI使用HTTP协议的GET、POST、PUT、DELETE等方法来操作资源。
3.表述:WebAPI使用表述来描述资源。
表述可以是JSON、XML、HTML或其他格式。
4.状态码:WebAPI使用HTTP状态码来表示响应的状态。
状态码包括200 OK、404 Not Found、500 Internal Server Error等。
WebAPI的安全性WebAPI的安全性非常重要,因为WebAPI可以被任何人使用,包括攻击者。
WebAPI的安全性包括以下方面:1.身份验证:WebAPI应该使用一种有效的身份验证机制来验证客户端的身份,例如基本认证、摘要认证或OAuth等。
2.授权:WebAPI应该使用授权机制来限制访问资源的权限。
例如,对于某些敏感的资源,只有特定的用户才能访问。
调用webapi接口实例

调用webapi接口实例调用WebAPI接口实例WebAPI是一种用于构建HTTP服务的框架,通过调用WebAPI接口可以实现与服务器进行数据交互的功能。
本文将以调用WebAPI接口实例为主题,介绍如何使用WebAPI进行数据传输和处理。
一、准备工作在开始调用WebAPI接口之前,首先需要准备一些基本的工作。
首先,确保已经安装了合适的开发工具,如Visual Studio等。
其次,需要了解所要调用的WebAPI接口的具体功能和参数要求,以便正确地进行调用。
二、发送请求在调用WebAPI接口之前,首先需要发送一个HTTP请求。
可以使用HttpClient类来发送请求,并设置请求的URL、请求方式和请求头等信息。
根据接口的要求,可能还需要设置请求体中的参数。
三、处理响应接下来,需要处理接口返回的响应。
一般而言,可以使用HttpResponseMessage类来获取响应的状态码、响应头和响应体等信息。
根据具体的业务需求,可以对响应进行解析和处理,例如提取所需的数据或进行错误处理。
四、异常处理在调用WebAPI接口时,可能会遇到各种异常情况,如网络错误、请求超时等。
为了确保程序的稳定性和可靠性,需要进行相应的异常处理。
可以使用try-catch语句来捕捉异常,并根据具体情况进行处理或提供错误提示。
五、安全性考虑在调用WebAPI接口时,需要注意保护数据的安全性。
可以通过使用HTTPS协议来加密传输的数据,防止数据被篡改或泄露。
此外,还可以使用身份验证和授权等机制来限制接口的访问权限,确保只有经过授权的用户才能进行调用。
六、性能优化为了提高接口调用的性能,可以采取一些优化措施。
例如,在请求中使用HTTP缓存机制,减少重复请求的次数;使用异步调用来提高并发处理能力;合理使用缓存来减少对服务器的访问等。
七、调试和测试在调用WebAPI接口之前,可以使用调试工具或测试工具对接口进行调试和测试。
可以模拟不同的请求参数和响应情况,以确保接口的正常工作和正确性。
webapi的几种请求方式

webapi的几种请求方式(原创版)目录1.引言2.GET 请求3.POST 请求4.PUT 请求5.DELETE 请求6.总结正文一、引言Web API 是一种用于构建 Web 应用程序的接口,它允许开发人员在不同的系统之间共享数据和功能。
Web API 通过 HTTP 协议进行通信,支持多种请求方式。
本文将介绍 Web API 的几种常见请求方式,包括 GET、POST、PUT 和 DELETE。
二、GET 请求GET 请求是最常用的 Web API 请求方式之一。
它用于从服务器上获取数据,通常用于查询或检索资源。
GET 请求的 URL 中通常包含查询参数,用于向服务器传递所需数据的具体信息。
服务器在接收到 GET 请求后,会返回相应的数据,通常以 JSON 格式表示。
三、POST 请求POST 请求用于向服务器发送数据,通常用于创建新资源或提交表单。
POST 请求的数据通常通过请求体发送,而 URL 中不包含查询参数。
服务器在接收到 POST 请求后,会处理数据并返回相应的响应,通常也以 JSON格式表示。
四、PUT 请求PUT 请求用于更新服务器上的现有数据。
它与 POST 请求类似,但PUT 请求通常需要指定要更新的资源的 ID 或其他唯一标识符。
服务器在接收到 PUT 请求后,会根据请求中的数据更新相应的资源,并返回响应。
五、DELETE 请求DELETE 请求用于删除服务器上的资源。
它与 GET、POST 和 PUT 请求不同,因为 DELETE 请求不需要 URL 中包含查询参数。
服务器在接收到 DELETE 请求后,会删除指定的资源,并返回响应。
六、总结Web API 支持多种请求方式,包括 GET、POST、PUT 和 DELETE。
每种请求方式都有其特定的用途和特点,开发人员需要根据实际需求选择合适的请求方式。
.net6 webapi 接口原理

文章标题:深度解析.net6 Web API 接口原理1. 介绍在今天的软件开发领域,Web API 接口的使用已经变得异常普遍。
.NET 6 是微软最新推出的版本,其对 Web API 接口的支持更加全面和强大。
我们有必要深入了解一下 .NET 6 Web API 接口的原理。
2. .NET 6 Web API 接口基本概念在深入了解 .NET 6 Web API 接口的原理之前,我们必须先了解一些基本概念。
这些概念包括 HTTP 协议、REST 架构、控制器、路由、模型绑定、中间件、过滤器、认证和授权等。
2.1 HTTP 协议HTTP 协议是 Web 通信的基础,它定义了客户端与服务器之间的通信规则。
在 .NET 6 中,Web API 接口是基于 HTTP 协议实现的。
2.2 REST 架构REST(Representational State Transfer)是一种设计风格,它强调客户端和服务器之间的状态转移。
在 .NET 6 中,Web API 接口通常遵循 RESTful 风格,以实现资源的增删改查操作。
2.3 控制器在 .NET 6 中,控制器是管理 Web API 请求和响应的核心组件。
通过控制器,我们可以定义路由、处理请求、进行模型绑定和返回响应。
2.4 路由路由是指定 URL 与控制器中的方法之间的映射关系。
在 .NET 6 中,我们可以使用路由来定义 Web API 接口的访问位置区域和参数。
2.5 模型绑定模型绑定是将 HTTP 请求的参数绑定到控制器的方法参数或自定义类型的过程。
在 .NET 6 中,模型绑定使得我们能够方便地处理请求参数并进行验证。
2.6 中间件中间件是 .NET 6 中用于处理 HTTP 请求和响应的组件。
通过中间件,我们可以实现请求的拦截、日志记录、异常处理等功能。
2.7 过滤器过滤器是在 .NET 6 中用于实现请求和响应过程中的预处理和后处理逻辑的组件。
java中webapi调用方式

在Java中,Web API调用是一项非常常见的任务。
Web API是一种由HTTP 协议提供服务的接口,它允许不同的应用程序之间进行通信。
在本文中,我将以从简到繁、由浅入深的方式来探讨Java中WebAPI调用的方式,并共享我对这个主题的个人观点和理解。
1. URLConnection类我们可以使用Java内置的URLConnection类来进行简单的Web API 调用。
这个类提供了一种简单而基本的方式来打开一个到指定URL资源的通信信息,并可以读取和写入该资源。
它适用于简单的GET和POST请求,但在处理复杂的响应和错误处理方面就显得力不从心了。
2. Apache HttpClientApache HttpClient是一个强大的Java HTTP客户端库,它为开发人员提供了更丰富的功能和更灵活的方式来进行Web API调用。
相比于URLConnection类,HttpClient具有更强大的功能,例如支持HTTPS、重定向、HTTP代理等。
它还提供了更友好的API,使得我们可以更轻松地处理响应和错误。
3. Spring RestTemplate作为Spring框架的一部分,RestTemplate是一种简化了的HTTP客户端工具,它提供了一种更优雅的方式来进行Web API调用。
通过RestTemplate,我们可以很容易地实现GET、POST、PUT、DELETE 等HTTP方法的调用,并且可以方便地处理响应和错误。
4. Reactive WebClient随着Spring 5引入了响应式编程范式,Reactive WebClient成为了一种新的选择。
它使用了Reactor库,提供了一种基于响应式流的方式来进行Web API调用。
这种方式在处理大量并发请求时具有很大的优势,并且可以方便地进行响应式编程。
总结回顾:在本文中,我从URLConnection类开始介绍了Java中Web API调用的方式,然后逐步深入介绍了Apache HttpClient、Spring RestTemplate和Reactive WebClient。
webapi使用方法

webapi使用方法Web API(Web Application Programming Interface)是一种用于不同应用程序之间进行通信的技术,它可以使不同的应用程序之间共享数据和功能。
通过使用Web API,开发人员可以轻松地将应用程序的功能扩展到其他平台和设备上。
本文将介绍Web API的使用方法,以帮助开发人员更好地理解和应用这项技术。
一、Web API的基本概念Web API是一组定义了应用程序之间通信规范的接口。
它允许开发人员使用HTTP协议在不同的应用程序之间传递数据。
Web API可以接收HTTP请求,并返回相应的数据或执行相应的操作。
开发人员可以使用不同的编程语言和框架来创建Web API,例如Java、C#、Python等。
二、Web API的使用场景Web API广泛应用于各种场景,例如:1.移动应用程序开发:开发人员可以使用Web API将移动应用程序与服务器进行通信,实现数据的传递和功能的扩展。
2.跨平台应用程序开发:Web API可以使不同平台的应用程序共享数据和功能,实现跨平台应用程序的开发和部署。
3.第三方应用程序集成:通过使用Web API,开发人员可以将自己的应用程序集成到其他应用程序中,实现数据共享和功能交互。
三、Web API的使用步骤使用Web API一般需要经过以下步骤:1.确定API的功能和数据:首先,开发人员需要确定API的功能和需要共享的数据。
这可以根据应用程序的需求和业务逻辑来确定。
2.设计API的接口:接下来,开发人员需要设计API的接口,包括请求方法(GET、POST、PUT、DELETE等)、请求参数和响应数据格式等。
3.实现API的功能:根据设计的接口,开发人员需要实现API的功能,包括数据的获取、处理和返回等。
在实现过程中,开发人员可以使用各种编程语言和框架来实现API的功能。
4.测试API的功能:完成API的实现后,开发人员需要进行测试,确保API的功能和数据的正确性。
C#--调用WebApi--(Get,Post,Put,Delete请求总结)

C#--调⽤WebApi--(Get,Post,Put,Delete请求总结)以下是学习笔记:⼀,HttpWebRequest⽅式1,WebRequest⽅式 Get请求#region ⽅法3 .WebRequest⽅式 Get请求public static string HttpWebRequest_Get(string url){//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);Encoding encoding = Encoding.UTF8;//构造⼀个Web请求的对象HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "GET";request.Accept = "text/html, application/xhtml+xml, */*";request.ContentType = "application/json";//获取web请求的响应的内容HttpWebResponse response = (HttpWebResponse)request.GetResponse();using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)){return reader.ReadToEnd();}}private void button3_Click(object sender, EventArgs e){//string ss = HttpWebRequest_Get("http://localhost:55837/api/product");string ss = HttpWebRequest_Get(txt_get_url.Text);this.textBox3.Text += ss;}#endregion2,WebRequest⽅式 Get带参数请求#region WebRequest⽅式 Get带参数请求private void button6_Click(object sender, EventArgs e){string id = this.txt_get_parameter.Text;string ss = HttpWebRequest_Get(txt_get_url.Text+ "?"+id.Trim());//带参数this.textBox6.Text += ss;}#endregion3,WebRequest⽅式 Post请求#region ⽅法3 WebRequest⽅式 Post请求public static string HttpWebRequest_Post(string url, string body){//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); Encoding encoding = Encoding.UTF8;HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);request.Method = "POST"; //Post请求⽅式request.Accept = "text/html, application/xhtml+xml, */*";// 内容类型//request.ContentType = "application/json";//参数格式: {username:"admin",password:"123} 如果参数不是json类型会报错request.ContentType ="application/x-www-form-urlencoded"; //参数:username=admin&password=123 如果参数是json格式或者参数写错不会报错的 byte[] buffer = encoding.GetBytes(body);request.ContentLength = buffer.Length;request.GetRequestStream().Write(buffer, 0, buffer.Length);//HttpWebResponse response = (HttpWebResponse)request.GetResponse();//上⾯的代码会有异常出现,更改如下:HttpWebResponse response;try{response = (HttpWebResponse)request.GetResponse();}catch (WebException ex){response = (HttpWebResponse)ex.Response;}using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)){return reader.ReadToEnd();}}private void button4_Click(object sender, EventArgs e){string url = this.txt_post_url.Text;string body = this.txt_post_parameter.Text;string ss = HttpWebRequest_Post(url, body);this.textBox4.Text += ss;}#endregion4,HttpWebRequest⽅式 Delete请求:#region WebRequest⽅式 Delete请求/// <summary>/// API发送DELETE请求,返回状态:200成功,201失败/// </summary>/// <param name="url"></param>/// <returns></returns>public static string HttpWebRequest_Delete(string url){//Web访问对象64//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);string serviceUrl = url;HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);myRequest.Method = "DELETE";// 获得接⼝返回值68HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());string ReturnXml = reader.ReadToEnd();reader.Close();myResponse.Close();return ReturnXml;}private void button7_Click(object sender, EventArgs e){if (txt_delete_parameter.Text.Trim().Length > 0){HttpWebRequest_Delete(txt_delete_rul.Text+"?"+txt_delete_parameter.Text);//带参数删除}else{HttpWebRequest_Delete(txt_delete_rul.Text);//全部删除}}5,HttpWebRequest⽅式 Put请求:见下⾯的通⽤⽅法⼆,HttpClient ⽅式1,HttpClient ⽅式 Get请求#region ⽅法4 HttpClient ⽅式 Get请求public static string HttpClienGet(string url){HttpClient hc = new HttpClient();string html= hc.GetStringAsync(url).Result;return html;}private void btn_HttpClentGet_Click(object sender, EventArgs e){string url = this.txt_get_url.Text;string html = HttpClienGet(url);txt_HttpClentGet_Result.Text += html;}#endregion2,HttpClient ⽅式 Post请求#region ⽅法4 HttpClient ⽅式 Post请求public static async void HttpClientPost(string url){var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.None }; using (var httpclient = new HttpClient(handler)){httpclient.BaseAddress = new Uri(url);var content = new FormUrlEncodedContent(new Dictionary<string, string>(){{"name", "杜宗英"},{"age", "18"},{"gender","false" }});var response = await httpclient.PostAsync(url, content);string responseString = await response.Content.ReadAsStringAsync();MessageBox.Show(responseString);}}private void button5_Click(object sender, EventArgs e){string url = this.txt_post_url.Text;HttpClientPost(url);}#endregion三,WebClient ⽅式1,WebClient⽅式 Post请求#region WebClient⽅式 Post请求/// <summary>////// </summary>/// <param name="url"></param>/// <param name="body">传递的参数</param>/// <returns></returns>public static string WebClientPost(string url,string body){byte[] postData = Encoding.UTF8.GetBytes(body);//编码,尤其是汉字,事先要看下抓取⽹页的编码⽅式WebClient webClient=new WebClient();webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST⽅式必须加的header,如果改为GET⽅式的话就去掉这句话即可 byte[] responseData = webClient.UploadData(url, "POST", postData);//得到返回字符流string srcString = Encoding.UTF8.GetString(responseData);//解码return srcString;}private void btn_WebClient_Post_Click(object sender, EventArgs e){string url = this.txt_post_url.Text;string body = this.txt_post_parameter.Text;string srcString = WebClientPost(url, body);this.txt_WebClient_Post.Text += srcString;}#endregion四,HttpWebRequest通⽤⽅法public string CommonHttpWebRequest(string data, string uri, string type){//Web访问对象,构造请求的url地址//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);string serviceUrl = uri;//构造http请求的对象HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceUrl);//转成⽹络流byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);//设置request.Method = type;request.ContentLength = buf.Length;//myRequest.ContentType = "application/json";//如果参数不是json格式会报错request.ContentType ="application/x-www-form-urlencoded";request.MaximumAutomaticRedirections = 1;request.AllowAutoRedirect = true;// 发送请求Stream newStream = request.GetRequestStream();newStream.Write(buf, 0, buf.Length);newStream.Close();// 获得接⼝返回值//HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();//上⾯的代码会有异常出现,更改如下:HttpWebResponse response;try{response = (HttpWebResponse)request.GetResponse();}catch (WebException ex){response = (HttpWebResponse)ex.Response;}StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);string ReturnXml = reader.ReadToEnd();reader.Close();response.Close();return ReturnXml;} 1,Delete请求代码:private void btn_webapi_delete_Click(object sender, EventArgs e){string url = txt_delete_rul.Text;string data = txt_delete_parameter.Text;if (data.Trim().Length > 0){CommonHttpWebRequest(data, url + "?" + data, "DELETE");//带参数删除}else{CommonHttpWebRequest(data, url, "DELETE"); ;//全部删除}} 2,Post请求代码:private void btn_webapi_post_Click(object sender, EventArgs e){string url = txt_post_url.Text;string data = txt_post_parameter.Text;string res = CommonHttpWebRequest(data, url, "POST");this.txt_webapi_get_data.Text += res;} 3,Put 请求代码:private void btn_webapi_put_Click(object sender, EventArgs e){string url = txt_put_url.Text;string data = txt_put_parameter.Text;string res = CommonHttpWebRequest(data, url, "PUT");this.txt_webapi_get_data.Text += res;}。
webapi 讲解

webapi 讲解Web API(Application Programming Interface)是一种用于不同应用程序之间进行通信的技术。
它允许开发人员通过定义的接口,以统一的方式访问和操作远程服务器上的资源。
本文将围绕Web API展开讨论,从其基本概念、工作原理、应用场景和未来发展等方面进行介绍。
一、Web API的基本概念Web API是一种软件接口,它使用HTTP协议作为通信协议,通过URL(Uniform Resource Locator)来定位和访问资源。
它可以提供各种服务,如数据查询、数据修改、文件上传和下载等。
Web API 基于REST(Representational State Transfer)架构风格,以资源为中心,使用HTTP方法(GET、POST、PUT、DELETE)来进行操作。
二、Web API的工作原理Web API的工作原理可以简单描述为以下几个步骤:1. 客户端通过HTTP请求访问Web API,包括指定资源的URL和请求方法。
2. 服务器接收到请求后,根据URL和请求方法,调用相应的API方法。
3. API方法对请求进行处理,可能涉及数据查询、数据更新等操作。
4. 处理完请求后,服务器将结果封装成HTTP响应返回给客户端。
三、Web API的应用场景Web API在互联网应用开发中有广泛的应用场景,例如:1. 移动应用开发:移动应用可以通过Web API访问远程服务器上的数据,实现数据的同步和共享。
2. 第三方集成:Web API可以提供给第三方开发者使用,使其能够与自己的应用进行集成,实现更多功能和服务。
3. 数据开放:Web API可以将内部数据开放给外部开发者使用,促进数据共享和创新。
4. 服务器通信:不同服务之间可以通过Web API进行通信,实现数据的交互和共享。
四、Web API的未来发展随着互联网的快速发展和应用需求的不断增加,Web API的重要性日益凸显。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回到目录
HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所有的Request数据,这是基于安全方面的考虑。
一Api接口参数的标准性
Get方式,可以有多个重载,有多个参数
POST方式,只能有一个参数,并且用[FromBody]约束,如果有多个参数,需要以对象的方式进行传递
Put方式,只能有两个参数,其中一个是通过Request.QueryString方式进行传递的,作为要更新对象的主键,别一个是[FromBody]字段,也是一个字段,如果多个字段需要把它封装成对象
标准接口如图
二调用方,参数的标准性
在客户端进行接口调用时,我们以网页端为例,看一下网页端进行ajax跨域请求的代码
Get方式
$.ajax({
url: "http://localhost:52824/api/register",
type: "GET",
success: function (data) {
console.log("json:" + data);
}
});
Post方式
$.ajax({
url: "http://localhost:52824/api/register",
type: "POST",
data: { '': '1' },//这里键名称必须为空,多个参数请传对象,api端参数名必须为value
success: function (data) {
console.log("post:" + data);
}
});
三在控制台中实现Get方式获取接口数据(只有异步实现)
///<summary>
/// HttpClient实现Get请求
///</summary>
static async void dooGet()
{
string url =
"http://localhost:52824/api/register?id=1&leval=5";
//创建HttpClient(注意传入HttpClientHandler)
var handler = new HttpClientHandler()
{ AutomaticDecompression = DecompressionMethods.GZip };
using (var http = new HttpClient(handler))
{
//await异步等待回应
var response = await http.GetAsync(url);
//确保HTTP成功状态值
response.EnsureSuccessStatusCode();
//await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
Console.WriteLine(await
response.Content.ReadAsStringAsync());
}
}
四在控制台中实现Post方式提交数据(只有异步实现)
///<summary>
/// HttpClient实现Post请求
///</summary>
static async void dooPost()
{
string url = "http://localhost:52824/api/register";
var userId = "1";
//设置HttpClientHandler的AutomaticDecompression
var handler = new HttpClientHandler()
{ AutomaticDecompression = DecompressionMethods.GZip };
//创建HttpClient(注意传入HttpClientHandler)
using (var http = new HttpClient(handler))
{
//使用FormUrlEncodedContent做HttpContent
var content = new FormUrlEncodedContent(new Dictionary<string, string>()
{
{"", userId}//键名必须为空
});
//await异步等待回应
var response = await http.PostAsync(url, content);
//确保HTTP成功状态值
response.EnsureSuccessStatusCode();
//await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
Console.WriteLine(await
response.Content.ReadAsStringAsync());
}
}
五在控制台中实现Put方式提交数据(只有异步实现)
///<summary>
/// HttpClient实现Put请求
///</summary>
static async void dooPut()
{
string url =
"http://localhost:52824/api/register?userid=" + userId;
var userId = "1";
//设置HttpClientHandler的AutomaticDecompression
var handler = new HttpClientHandler()
{ AutomaticDecompression = DecompressionMethods.GZip };
//创建HttpClient(注意传入HttpClientHandler)
using (var http = new HttpClient(handler))
{
//使用FormUrlEncodedContent做HttpContent
var content = new FormUrlEncodedContent(new Dictionary<string, string>()
{
{"", "数据"}//键名必须为空
});
//await异步等待回应
var response = await http.PutAsync(url, content);
//确保HTTP成功状态值
response.EnsureSuccessStatusCode();
//await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
Console.WriteLine(await
response.Content.ReadAsStringAsync());
}
}。