这个学期就要毕业了,选了一个无人机地面站软件设计的题目,这几天也开始着手做,

首先做了一个百度地图的调用,这里因为是上位机的开发,所有就不介绍Javascript的

调用方法,核心是用到一个类HttpClient,通过相关设置就能请求到相关内容,代码如下:

//创建一个HttpClient的对象
HttpClient client = new HttpClient();
//请求的地址 其中()里面是你的ak值 这是百度开发者中心控制台中创建应用百度给的 后面还用相关参数是对返回图片的相关设置
string MapUri = "http://api.map.baidu.com/staticimage/v2?ak=()i&mcode=666666&center=116.403874,39.914888&width=300&height=200&zoom=11 ";
//设置响应头 大概意思是告诉服务端是PC端的浏览器
client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
//创建响应对象
HttpResponseMessage message1 = client.GetAsync(new Uri(MapUri)).Result;
//以流的方式接受响应信息
System.IO.Stream stream = message1.Content.ReadAsStreamAsync().Result;//http获取 返回流
//从流创建图片
Bitmap bitMap = new Bitmap(stream);

这里再做一个有IP获取详细系统的api:

//请求地址 ak同上 这里有个callback回调函数 目前我还没用到 估计是javascript调用时会用到
string GeoUri = "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=39.983424,116.322987&output=json&pois=1&ak=()";
//响应对象
HttpResponseMessage message2 = client.GetAsync(new Uri(GeoUri)).Result;
//响应内容的长度
int length = message2.Content.ReadAsStringAsync().Result.Length;
//由于会返回renderReverse&renderReverse的前缀 所以把它删除 不然不符合Json格式要求
string result = message2.Content.ReadAsStringAsync().Result.Remove(length - 1).Remove(0, 29);//substring 包含头不包含尾
//这里的处理也是为了让数据满足json格式要求
result = "[" + result + "]";
//把结果转换为JArray
JArray ja = (JArray)JsonConvert.DeserializeObject(result);
//转化为JObject对象
JObject jsonObj = (JObject)ja[0];
//读取数据 这里要注意返回的数据格式 之前我就因为写错一个字符 导致接受不到数据
int ss = (int)jsonObj["status"];
string provinceName = (string)jsonObj["result"]["addressComponent"]["province"];
string cityName = (string)jsonObj["result"]["addressComponent"]["city"];
string districtName = (string)jsonObj["result"]["addressComponent"]["district"];
string street = (string)jsonObj["result"]["addressComponent"]["street"];

  

提示:这里处理数据用到Newtonsoft.Json.dll类库,引入到项目中就可以。

好像还用github的开源项目json.net,也是处理json数据的,应该用NuGet

包管理工具下载一下就可以用了,一般在它的官网也有教程的,由于本人没看过,

所以就不多说了。

最新文章

  1. 关于Apache Spark
  2. java多线程中关于join方法的使用
  3. input 禁止输入法
  4. iBatis框架batch处理优化 (转)
  5. STL—Vector简介
  6. 转:在Android中使用AlarmManager
  7. memcached安装配置
  8. qt播放器
  9. Qt Library 链接库
  10. c++日历v1.0版本
  11. 一个简单清晰的Redis操作类
  12. 全网最详细的Centos7系统里安装Openresty(图文详解)
  13. ireportdesigner下载页面
  14. 银行卡所属公司判断 参考自https://blog.csdn.net/well2049/article/details/79429130
  15. Swoole 内存操作(Table)
  16. JAVA语言 第六周
  17. 一款优秀的OA办公系统有哪些功能?
  18. sed使用笔记
  19. lua5.3+luasocket
  20. Mac下默认JDK路径

热门文章

  1. Oracle数据库零散知识06 -- Package的定义与简单触发器
  2. BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划
  3. NOIP 模拟 玩积木 - 迭代加深搜索 / bfs+hash+玄学剪枝
  4. Java入门程序
  5. ASP.Net Core 2.2使用SQLite数据库unable to open database file
  6. 最近更新电脑管家开机速度约慢很多木有?$计算机管理-废话$.qmgc
  7. TCP协议是如何保证可靠传输的【经典】
  8. .net 程序员 两年工作总结
  9. Linux性能测试 free命令
  10. 非参贝叶斯(Bayesian Non-parameter)初步