C#封装百度Web服务API处理包含(Geocoding API,坐标转换API)
2014-04-07 11:40
405 查看
1、创建基础参数类
View Code
public class BaiduLbs { private readonly string _key; public static string CurrentRequest = ""; public BaiduLbs(string key) { _key = key; } /// <summary> /// 请求 /// </summary> /// <param name="param"></param> /// <param name="baiduLbsType"></param> /// <param name="encoding"></param> /// <param name="action"></param> public void Request(string param, BaiduLbsType baiduLbsType, Encoding encoding, Action<string> action) { WebClient webClient = new WebClient { Encoding = encoding }; string url = ""; switch (baiduLbsType) { case BaiduLbsType.PlaceApIv2Search: url = string.Format(BaiduConstParams.PlaceApIv2Search + "?{0}", param); break; case BaiduLbsType.PlaceApIv2Detail: url = string.Format(BaiduConstParams.PlaceApIv2Detail + "?{0}", param); break; case BaiduLbsType.PlaceApIv2Eventsearch: url = string.Format(BaiduConstParams.PlaceApIv2Eventsearch + "?{0}", param); break; case BaiduLbsType.PlaceApIv2Eventdetail: url = string.Format(BaiduConstParams.PlaceApIv2Eventdetail + "?{0}", param); break; case BaiduLbsType.GeocodingApIv2: case BaiduLbsType.GeocodingApIv2Reverse: url = string.Format(BaiduConstParams.GeocodingApIv2 + "?{0}", param); break; case BaiduLbsType.Translate: url = string.Format(BaiduConstParams.TranslateApi + "?{0}", param); break; case BaiduLbsType.Geoconv: url = string.Format(BaiduConstParams.GeoconvApi + "?{0}", param); break; } CurrentRequest = url; action(webClient.DownloadString(url)); } /// <summary> /// 响应 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="param"></param> /// <param name="baiduLbsType"></param> /// <param name="encoding"></param> public T Response<T>(string param, BaiduLbsType baiduLbsType, Encoding encoding) { T t = default(T); Request(param, baiduLbsType, encoding, json => { if (baiduLbsType == BaiduLbsType.GeocodingApIv2 || baiduLbsType == BaiduLbsType.GeocodingApIv2Reverse) { if (json.Contains("\"result\":[]")) { json = json.Replace("\"result\":[]", "\"result\":{}"); } } t = (T)JsonConvert.DeserializeObject(json, typeof(T)); }); return t; } public BaiduGeocodingResults BaiduGeocoding(string address, string city) { address = System.Web.HttpUtility.UrlEncode(address); city = System.Web.HttpUtility.UrlEncode(city); string request = string.Format("address={0}&output=json&ak={1}&city={2}", address, _key, city); var result = Response<BaiduGeocodingResults>(request, BaiduLbsType.GeocodingApIv2, Encoding.UTF8); if (result.Status == Status.Ok && result.Result.Location == null) { request = string.Format("address={0}&output=json&ak={1}&city={2}", city + address, _key, city); return Response<BaiduGeocodingResults>(request, BaiduLbsType.GeocodingApIv2, Encoding.UTF8); } return result; } public BaiduGeocodingResults BaiduGeocoding(string longitude, string dimensions, string pois) { var location = longitude + "," + dimensions; string request = string.Format("ak={0}&location={1}&pois={2}", _key, location, pois); return Response<BaiduGeocodingResults>(request, BaiduLbsType.GeocodingApIv2, Encoding.UTF8); } public GeoconvResults BaiduGeoconv(GeoconvParams geoconvParams, ref List<GeoconvPOI> geoconvPois) { geoconvParams.Ak = _key; return Response<GeoconvResults>(geoconvParams.ToString(ref geoconvPois), BaiduLbsType.Geoconv, Encoding.UTF8); } public GeoconvResults BaiduGeoconv(GeoconvParams geoconvParams, GeoconvPOI geoconvPoi) { geoconvParams.Ak = _key; List<GeoconvPOI> geoconvPois = new List<GeoconvPOI> { geoconvPoi }; return Response<GeoconvResults>(geoconvParams.ToString(ref geoconvPois), BaiduLbsType.Geoconv, Encoding.UTF8); } }
View Code
相关文章推荐
- c#封装百度web服务geocoding api 、百度坐标转换示例
- 百度API从经纬度坐标到地址的转换服务
- 提高生产力:发送邮件API和Web服务(包含源码)
- c#调用百度地图web服务api-----该方法可用在js跨域请求上
- 地球坐标-火星坐标-百度坐标及之间的转换算法 C#
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- C#中关于搜狗地图web服务api的httpresponse中回应json中文乱码的问题 Encoding
- 去百度API的百度地图准确叠加和坐标转换的解决方案研究
- GPS坐标转换为百度坐标 js封装
- 使用Web服务将C#代码转换为VB.NET代码
- GPS坐标转换为百度坐标 js封装
- 提高生产力:发送邮件API和Web服务(包含源码)
- 提高生产力:发送邮件API和Web服务(包含源码)
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 二、Http 请求结果类型转换与错误处理
- 提高生产力:发送邮件API和Web服务(包含源码)
- 百度坐标转换API使用
- C#使用百度API通过IP获取地理位置和坐标
- 当您通过使用 InfoPath 2010 表单连接到 Web 服务时沙盒中处理的代码包含的、 不返回的数据或您收到一条错误消息
- 百度JSP版坐标转换 限定不大于10个每次的处理办法