1、创建基础参数类
1 public static class BaiduConstParams 2 { 3 public const string PlaceApIv2Search = "http://api.map.baidu.com/place/v2/search"; 4 public const string PlaceApIv2Detail = "http://api.map.baidu.com/place/v2/detail"; 5 public const string PlaceApIv2Eventsearch = "http://api.map.baidu.com/place/v2/eventsearch"; 6 public const string PlaceApIv2Eventdetail = "http://api.map.baidu.com/place/v2/eventdetail"; 7 public const string GeocodingApIv2 = "http://api.map.baidu.com/geocoder/v2/"; 8 public const string GeocodingApIv2Reverse = "http://api.map.baidu.com/geocoder/v2/"; 9 public const string TranslateApi = "http://openapi.baidu.com/public/2.0/bmt/translate";10 public const string GeoconvApi = "http://api.map.baidu.com/geoconv/v1/";11 }12 13 public static class BaiduErrorMessages14 {15 public const string NotKey = "密钥不存在";16 public const string LackParam = "缺少必要请求参数";17 }View Code
2、定义API错误信息与产品信息
1 public enum BaiduLbsType 2 { 3 PlaceApIv2Search, 4 PlaceApIv2Detail, 5 PlaceApIv2Eventsearch, 6 PlaceApIv2Eventdetail, 7 GeocodingApIv2, 8 GeocodingApIv2Reverse, 9 Translate,10 Geoconv11 }12 13 public enum Status14 {15 /// <summary>16 /// 正常 17 /// </summary>18 Ok = 0,19 /// <summary>20 /// 请求参数非法 21 /// </summary>22 ParameterInvalid = 2,23 /// <summary>24 /// 权限校验失败25 /// </summary>26 VerifyFailure = 3,27 /// <summary>28 /// 配额校验失败29 /// </summary>30 QuotaFailure = 4,31 /// <summary>32 /// 不存在或者非法 33 /// </summary>34 AkFailure = 5,35 /// <summary>36 /// Transform 内部错误37 /// </summary>38 InternalError = 1,39 /// <summary>40 /// from非法41 /// </summary>42 FromIllegal = 21,43 /// <summary>44 /// to非法45 /// </summary>46 ToIllegal = 22,47 /// <summary>48 /// coords非法49 /// </summary>50 CoordsIllegal = 24,51 /// <summary>52 /// coords个数非法,超过限制53 /// </summary> 54 CoordsCountIllegal = 2555 56 }View Code
3、定义API结果返回实体映射类
public class BaiduGeocodingResults { /// <summary> /// 返回结果状态值, 成功返回0,其他值请查看附录。 /// </summary> [JsonPRoperty(PropertyName = "status")] public Status Status; /// <summary> /// 返回结果状态值, 成功返回0,其他值请查看附录。 /// </summary> [JsonProperty(PropertyName = "result")] public BaiduGeocodingResult Result; } public class BaiduGeocodingResult { /// <summary> /// 经纬度坐标 /// </summary> [JsonProperty(PropertyName = "location")] public BaiduGeocodingLoaction Location; /// <summary> /// 位置的附加信息,是否精确查找。1为精确查找,0为不精确。 /// </summary> [JsonProperty(PropertyName = "precise")] public int Precise; /// <summary> /// 可信度 /// </summary> [JsonProperty(PropertyName = "confidence")] public int Confidence; /// <summary> /// 地址类型 /// </summary> [JsonProperty(PropertyName = "level")] public string Level; /// <summary> /// 结构化地址信息 /// </summary> [JsonProperty(PropertyName = "formatted_address")] public string FormattedAddress; /// <summary> /// 所在商圈信息,如 "人民大学,中关村,苏州街" /// </summary> [JsonProperty(PropertyName = "business")] public string Business; /// <summary> /// 具体地址 /// </summary> [JsonProperty(PropertyName = "addressComponent")] public BaiduGeocodingAddress AddressComponent; } public class BaiduGeocodingLoaction { /// <summary> /// 纬度值 /// </summary> [JsonProperty(PropertyName = "lat")] public decimal Lat; /// <summary> /// 经度值 /// </summary> [JsonProperty(PropertyName = "lng")] public decimal Lng; } public class BaiduGeocodingAddress { /// <summary> /// 城市名 /// </summary> [JsonProperty(PropertyName = "city")] public string City; /// <summary> /// 区县名 /// </summary> [JsonProperty(PropertyName = "district")] public string District; /// <summary> /// 省名 /// </summary> [JsonProperty(PropertyName = "province")] public string Province; /// <summary> /// 街道名 /// </summary> [JsonProperty(PropertyName = "street")] public string Street; /// <summary> /// 街道门牌号 /// </summary> [JsonProperty(PropertyName = "street_number")] public string StreetNumber; }View Code
4、创建API通用处理类
1 public class BaiduLbs 2 { 3 private readonly string _key; 4 5 public static string CurrentRequest = ""; 6 7 public BaiduLbs(string key) 8 { 9 _key = key; 10 } 11 12 /// <summary> 13 /// 请求 14 /// </summary> 15 /// <param name="param"></param> 16 /// <param name="baiduLbsType"></param> 17 /// <param name="encoding"></param> 18 /// <param name="action"></param> 19 public void Request(string param, BaiduLbsType baiduLbsType, Encoding encoding, Action<string> action) 20 { 21 WebClient webClient = new WebClient { Encoding = encoding }; 22 string url = ""; 23 switch (baiduLbsType) 24 { 25 case BaiduLbsType.PlaceApIv2Search: 26 url = string.Format(BaiduConstParams.PlaceApIv2Search + "?{0}", param); 27 break; 28 case BaiduLbsType.PlaceApIv2Detail: 29 url = string.Format(BaiduConstParams.PlaceApIv2Detail + "?{0}", param); 30
新闻热点
疑难解答