C# HttpWebResponse 调用WebApi

最近有个接口项目,主要运用了webApi,网上查了些资料,再次总结一下,希望帮助到大家。

客户端主要运用到post方法用的是HttpWebResponse

webApi接受客户端传的参数 一种是地址传过来的参数  一种是http的请求体中传过来的

服务器webApi 接受代码    

WebApi程序可在方法参数前加[FromBody]标识,表示该参数值应该从请求的Body中获取,而不是从URL中获取

客户端 请求代码   

主要注意  request.ContentType 如果传的json类型 要设置成 “application/json; charset=utf-8”

C#调用Web API,不同的请求方式(如GET、POST)有不同的实现流程,以下为你详细介绍: ### GET请求流程 以使用`HttpWebRequest`类发送GET请求为例,代码如下: ```csharp public static string HttpGet(string url) { Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/json"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } ``` 该流程为: 1. 创建`HttpWebRequest`对象,传入目标URL。 2. 设置请求方法为`GET`,并设置请求的`Accept`和`ContentType`头信息。 3. 发送请求并获取`HttpWebResponse`对象。 4. 使用`StreamReader`读取响应流中的内容并返回。 ### POST请求流程 #### 使用`WebClient`类发送POST请求 ```csharp // 初始化WebClient System.Net.WebClient webClient = new System.Net.WebClient(); webClient.Headers.Add("Accept", "*/*"); webClient.Headers.Add("Accept-Language", "zh-cn"); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); // 将字符串转换成字节数组 byte[] postData = Encoding.GetEncoding("utf-8").GetBytes(Params); try { byte[] responseData = webClient.UploadData(Url, "POST", postData); string srcString = Encoding.GetEncoding("utf-8").GetString(responseData); return srcString.Trim(); } catch (Exception Exce) { // 异常处理 } ``` 此流程为: 1. 创建`WebClient`对象,并设置请求头信息。 2. 将请求参数转换为字节数组。 3. 调用`UploadData`方法发送POST请求,并获取响应的字节数组。 4. 将响应的字节数组转换为字符串并返回。 #### 使用`HttpWebRequest`类发送POST请求 ```csharp public static string HttpPost(string url, string body) { Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/x-www-form-urlencoded"; byte[] buffer = encoding.GetBytes(body); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } ``` 该流程为: 1. 创建`HttpWebRequest`对象,传入目标URL。 2. 设置请求方法为`POST`,并设置请求的`Accept`和`ContentType`头信息。 3. 将请求参数转换为字节数组,并设置请求的内容长度。 4. 将请求参数写入请求流。 5. 发送请求并获取`HttpWebResponse`对象。 6. 使用`StreamReader`读取响应流中的内容并返回。 ### 依赖第三方库发送请求 使用`HttpClient`类发送POST请求,依赖于`Newtonsoft.Json`库: ```csharp // 向后端发送请求 HttpClient httpClient = new HttpClient(); httpClient.Url = "http://localhost:9523/login"; httpClient.Method = "post"; UserInfo userInfo = new UserInfo(); userInfo.username = "zhangsan"; userInfo.password = "1234756"; httpClient.Data = JsonConvert.SerializeObject(userInfo); var iResult = JObject.Parse(httpClient.AsyncRequest()); ``` 此流程为: 1. 安装并引用`Newtonsoft.Json`库。 2. 创建`HttpClient`对象,设置请求的URL和方法。 3. 创建请求对象并序列化为JSON字符串。 4. 发送请求并解析响应结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值