C#请求WebApi
public static class RequestService { public static string jwttoken = "Api验证权限需要的秘钥"; /// <summary> /// GET请求 /// </summary> /// <param name="url">请求地址</param> /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param> /// <returns></returns> public static string GetHttpResponse(string url, int timeout = 60000) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = timeout; //往头部加入自定义验证信息 SetHeaderValue(request.Headers, "Authorization", jwttoken); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } /// <summary> /// Post方法(带参数 /// </summary> /// <param name="url">地址</param> /// <param name="postString">post数据的字符串</param> /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param> /// <returns></returns> public static string PostHttpResponse(string url, IDictionary<string, string> parameters, int timeout = 60000) { HttpWebRequest request = null; //HTTPSQ请求 request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; request.Timeout = timeout; //往头部加入自定义验证信息 SetHeaderValue(request.Headers, "Authorization", jwttoken); //如果需要POST数据 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); int i = 0; foreach (string key in parameters.Keys) { if (i > 0) { buffer.AppendFormat("&{0}={1}", key, parameters[key]); } else { buffer.AppendFormat("{0}={1}", key, parameters[key]); } i++; } byte[] data = Encoding.GetEncoding("utf-8").GetBytes(buffer.ToString()); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } } var resultStream = (request.GetResponse() as HttpWebResponse); string result = ""; //获取响应内容 using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// <summary> /// Post方法(登录获取token) /// </summary> /// <param name="url">地址</param> /// <param name="postString">post数据的字符串</param> /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param> /// <returns></returns> public static string LoginHttpResponse(string url, Object postData, int timeout = 60000) { HttpWebRequest request = null; //HTTPSQ请求 request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; request.ContentType = "application/json"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; request.Timeout = timeout; //如果需要POST数据 string str = JsonConvert.SerializeObject(postData); byte[] data = Encoding.GetEncoding("utf-8").GetBytes(str); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var resultStream = (request.GetResponse() as HttpWebResponse); string result = ""; //获取响应内容 using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// <summary> /// post方法(使用该方法请求Api时,Api中参数前需要加[FromBody]) /// </summary> /// <param name="url">地址</param> /// <param name="PostData">post数据对象</param> /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param> /// <returns></returns> public static string PostHttpResponse(string url, Object postData, int timeout = 60000) { HttpWebRequest request = null; //HTTPSQ请求 request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; request.ContentType = "application/json"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; request.Timeout = timeout; //往头部加入自定义验证信息 SetHeaderValue(request.Headers, "Authorization", jwttoken); //如果需要POST数据 string str = JsonConvert.SerializeObject(postData); byte[] data = Encoding.GetEncoding("utf-8").GetBytes(str); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var resultStream = (request.GetResponse() as HttpWebResponse); string result = ""; //获取响应内容 using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// <summary> /// 往头部加信息 /// </summary> /// <param name="header"></param> /// <param name="name"></param> /// <param name="value"></param> public static void SetHeaderValue(WebHeaderCollection header, string name, string value) { var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic); if (property != null) { var collection = property.GetValue(header, null) as NameValueCollection; collection[name] = value; } } }
本文来自博客园,作者:CelonY,转载请注明原文链接:https://www.cnblogs.com/CelonY/p/16245887.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?