Win(Phone)10开发第(3)弹,简单的Demo程序网络请求json解析列表显示
先分享一个由Json字符串直接生成解析对应的类的工具:
下面是由一个小功能(又特么的是天气)的实现,记录下下UAP的流程和结构(其实跟之前一模一样)
1:获取地理位置,需要在Package.appxmanifest 中添加声明,但是目前vs2015 ctp6 这个设计模式好像是打不开的,只能手动添加了:
|
1
2
3
4
|
<Capabilities> <Capability Name="internetClient" /> <DeviceCapability Name="location" /></Capabilities> |
2:访问网络数据
|
1
2
3
4
5
|
//http://www.liubaicai.net/archives/448
var http = new System.Net.Http.HttpClient();http.DefaultRequestHeaders.Add("UserAgent", "woshiuseragent");var resp = await http.GetStringAsync(new Uri("http://api.map.baidu.com/telematics/v3/weather?location=" + pos.Coordinate.Point.Position.Longitude + ","+ pos.Coordinate.Point.Position.Latitude + "&output=json&ak=yourappkey")); |
3:解析
|
1
2
3
4
5
|
//http://www.liubaicai.net/archives/448
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(resp))){ DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(WeatherDetail)); WeatherDetail info = (WeatherDetail)serializer.ReadObject(ms);} |
4:显示
|
1
2
|
ResultBox.Text = info.Results.FirstOrDefault().CurrentCity;ResultList.ItemsSource = info.Results.FirstOrDefault().WeatherData.ToList(); |
界面UI是这样的:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="40"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock Grid.Row="0" x:Name="ResultBox" FontSize="30" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/> <ListView x:Name="ResultList" Grid.Row="1" Margin="20" HorizontalAlignment="Center"> <ListView.Resources> <DataTemplate x:Key="ListBoxDataTemplate"> <Grid Margin="0,10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="80"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image Grid.Column="0" Width="80" Height="80" Source="{Binding Logo}"/> <StackPanel Margin="20,0,0,0" Grid.Column="1"> <TextBlock Text="{Binding Weather}" FontSize="16" /> <TextBlock Text="{Binding Wind}" FontSize="16" /> <TextBlock Text="{Binding Temperature}" FontSize="16" /> <TextBlock Text="{Binding Date}" FontSize="16" /> </StackPanel> </Grid> </DataTemplate> </ListView.Resources> <ListView.ItemTemplate> <StaticResource ResourceKey="ListBoxDataTemplate"/> </ListView.ItemTemplate> </ListView></Grid> |
App.cs里生命流程的控制,页面的导航和状态等等,跟之前win8.1乃至wp8是没什么太大区别的,两个平台的适配,才是迁移到UAP的最大工程。
来一张最终效果图:

Win(Phone)10开发第(3)弹,简单的Demo程序网络请求json解析列表显示的更多相关文章
- Win(Phone)10开发第(7)弹,Extended Execution
众所周知,在WindowsPhone8中,app在转入后台并且没有挂起的这段时间是可以继续运行的,此时可以继续执行程序的操作,这个功能在位置追踪app中时很有用的,当接电话来短信或者锁屏后不影响程序运 ...
- Win(Phone)10开发第(5)弹,本地媒体服务器的一些注意事项
首先有个wp上的http服务器 http://wphttpserver.codeplex.com/ 使用方式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- Win(Phone)10开发第(4)弹,HTTP 实时流播放 m3u8
其实这篇只有一句话,win10原生支持HLS啦 1 2 3 AdaptiveMediaSourceCreationResult amsResult = await AdaptiveMediaSourc ...
- Win(Phone)10开发第(2)弹,导出APPX包并签名部署
当我们新建一个win10 uap项目,如果想导出测试包,需要点击项目名称,选择商店-导出应用包,这个时候会生成一个文件夹,包含appx和ps1等文件. powershell运行Add-AppDevPa ...
- Win(Phone)10开发第(1)弹,桌面和手机的扩展API,还我后退键
喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...
- 基于RxJava2+Retrofit2简单易用的网络请求实现
代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...
- [macOS开发.NET Core] 一个简单的WEB程序
上一篇咱们提到了在macOS下选进行开发. 咱们已经把工具准备完成了. 现在咱们做一个简单的DEMO 创建WEB程序  之前咱们已经创建过WEB程序,并且成功的运行过数据 现在咱们创建一个页面,并显 ...
- IOS开发之—— 在AFN基础上进行的网络请求的封装
网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...
- 《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序
// Name: minimal.cpp // Purpose: Minimal wxWidgets sample // Author: Julian Smart #include "wx/ ...
随机推荐
- 利用python实现二分法和斐波那契序列
利用python实现二分法:我的实现思路如下 1.判断要查找的值是否大于最大值,如果大于则直接返回False 2.判断要查找的值是否小于最小值,如果小于则直接返回False 3.如果要查找的值在最大值 ...
- [leetcode]174. Dungeon Game地牢游戏
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...
- 使用springmvc从页面中获取数据,然后根据获得的参数信息进行修改,如果修改的数据中含有不是基本数据类型的参数。比如传的参数中有Date类型的数据时,需要我们进行参数类型转换。
1.1 需求 在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式. 1.2 需求分析 由于日期数据有很多格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑 ...
- Spring框架之CGLIB的代理技术(代码了解)
1.引入CBLIB的开发包 * 如果想使用CGLIB的技术来生成代理对象,那么需要引入CGLIB的开发的jar包,在Spring框架核心包中已经引入了CGLIB的开发包了.所以直接引入Spring核心 ...
- Python3编程技巧
高效处理数据类型方法: In []: from random import randint In []: data=[randint(-,) )] In []: data Out[]: [-, -, ...
- Boolean.getBoolean用法
相信很多人被Boolean.getBoolean(String name)欺骗过,想当然的认为它是将"true"或者"false"转换为Boolean类型的AP ...
- livecd-creator: UnicodeEncodeError: 'ascii' codec can't encode characters in position 1282-1
通过livecd-creator进行构建ISO过程中出现题目中错误, livecd-creator命令属于包livecd-tools 问题原因: 编码错误,初步判断应该与编码相关的环境变量设置有关 解 ...
- pycharm中的常用快捷键
查找 Ctrl + F 替换 Ctrl + R 注释 Ctrl + / 去掉注释 Ctrl + / Function Shortcut Use this shortcut to... Clos ...
- Laravel框架中实现supervisor执行异步进程
问题描述:在使用Laravel框架实现动态网页时,若有些操作计算量较大,为了不影响用户体验,往往需要使用异步方式去处理.这里使用supervisor和laravel自带的queues实现. Super ...
- [Selenium]Eclipse hangs at 57% in debug mode with TestNG tests
案例1: I am very thankful to saish and cbeust for the solution. I went through the similar issue with ...