ASP.NET Web Api 实践系列(二)Get/Post方式调用Web Api
2015-08-11 11:57
651 查看
本文给出Get/Post方式访问Web Api的帮助方法,对于Put/Delete方式的调用跟Post调用类似。
GetLastUrl方法用于根据基准URL和查询参数字典获取最终URL
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));这句代码表示希望服务返回Json字符串。
content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 表示以Json格式传递实体内容。
一、Web Api调用帮助类
下面给出Web Api调用帮助类的代码:using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Web; namespace TestApi { /// <summary> /// WebApi访问帮助类 /// </summary> public class WebApiHepler { /// <summary> /// 生成最终URL /// </summary> /// <param name="baseUrl">基准URL(不含查询串)</param> /// <param name="dictParam">查询参数字典</param> /// <returns>最终URL</returns> private static string GetLastUrl(string baseUrl, Dictionary<string, string> dictParam) { var sbUrl = new StringBuilder(baseUrl); if (dictParam != null && dictParam.Count > 0) { sbUrl.Append("?"); int index = 0; foreach (var item in dictParam) { sbUrl.Append(string.Format("{0}={1}", item.Key, HttpUtility.UrlEncode(item.Value, Encoding.UTF8))); if (index < dictParam.Count - 1) { sbUrl.Append("&"); } index++; } } var url = sbUrl.ToString(); return url; } /// <summary> /// GET方式调用Web Api /// </summary> /// <param name="baseUrl">基准URL(不含查询串)</param> /// <param name="dictParam">查询参数字典</param> /// <param name="result">返回数据(Json格式)</param> /// <param name="errMsg">出错信息</param> /// <returns>成功与否</returns> public static bool Get(string baseUrl, Dictionary<string, string> dictParam, out string result, out string errMsg) { errMsg = string.Empty; result = string.Empty; try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var url = GetLastUrl(baseUrl, dictParam); var tmpResult = client.GetAsync(url).Result; tmpResult.EnsureSuccessStatusCode(); result = tmpResult.Content.ReadAsStringAsync().Result; return true; } } catch (Exception ex) { errMsg = ex.Message; return false; } } /// <summary> /// POST方式调用Web Api /// </summary> /// <param name="baseUrl">基准URL(不含查询串)</param> /// <param name="dictParam">查询参数字典</param> /// <param name="parseData">传递实体数据(Json格式)</param> /// <param name="result">返回数据(Json格式)</param> /// <param name="errMsg">出错信息</param> /// <returns>成功与否</returns> public static bool Post(string baseUrl, Dictionary<string, string> dictParam, string parseData, out string result, out string errMsg) { errMsg = string.Empty; result = string.Empty; try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var url = GetLastUrl(baseUrl, dictParam); var content = new StringContent(parseData, Encoding.UTF8); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var tmpResult = client.PostAsync(url, content).Result; tmpResult.EnsureSuccessStatusCode(); result = tmpResult.Content.ReadAsStringAsync().Result; return true; } } catch (Exception ex) { errMsg = ex.Message; return false; } } } }
二、部分说明
对以上的代码作部分说明:GetLastUrl方法用于根据基准URL和查询参数字典获取最终URL
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));这句代码表示希望服务返回Json字符串。
content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 表示以Json格式传递实体内容。
相关文章推荐
- asp.net(c#)有关 Session 操作的几个误区
- aspx伪静态
- ASP.NET MVC学习小记
- ASP.NET Ajax 客户端框架未能加载、"Sys"未定义
- asp.net mvc怎么设置“起始页”
- DevExpress v15.1:ASP.NET WebForms功能增强(二)
- ASP.NET__1
- 简析ASP.NET网站的创建与发布过程
- ASP.NET MVC3模板页的使用(2)
- ASP.NET MVC4之js css文件合并功能(3)
- Asp.Mvc 2.0实现用户注册实例讲解
- ASP.NET验证码(3种)
- asp。net5的依赖注入
- Asp.net mvc web api 在项目中的实际应用
- ASP入门(五)- VBScript过程和函数
- ASP入门(四)-VBScript的流程控制语句
- ASP.NET并发处理
- VS2015“检测到在集成的托管管道模式下不适用的 ASP.NET 设置”的最终解决办法
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求(转)
- asp.net中套用母版页之后的findcontrol