先分享一个由Json字符串直接生成解析对应的类的工具:

jsonclassgenerator14

百度天气接口

下面是由一个小功能(又特么的是天气)的实现,记录下下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解析列表显示的更多相关文章

  1. Win(Phone)10开发第(7)弹,Extended Execution

    众所周知,在WindowsPhone8中,app在转入后台并且没有挂起的这段时间是可以继续运行的,此时可以继续执行程序的操作,这个功能在位置追踪app中时很有用的,当接电话来短信或者锁屏后不影响程序运 ...

  2. 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 ...

  3. Win(Phone)10开发第(4)弹,HTTP 实时流播放 m3u8

    其实这篇只有一句话,win10原生支持HLS啦 1 2 3 AdaptiveMediaSourceCreationResult amsResult = await AdaptiveMediaSourc ...

  4. Win(Phone)10开发第(2)弹,导出APPX包并签名部署

    当我们新建一个win10 uap项目,如果想导出测试包,需要点击项目名称,选择商店-导出应用包,这个时候会生成一个文件夹,包含appx和ps1等文件. powershell运行Add-AppDevPa ...

  5. Win(Phone)10开发第(1)弹,桌面和手机的扩展API,还我后退键

    喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...

  6. 基于RxJava2+Retrofit2简单易用的网络请求实现

    代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...

  7. [macOS开发.NET Core] 一个简单的WEB程序

    上一篇咱们提到了在macOS下选进行开发. 咱们已经把工具准备完成了. 现在咱们做一个简单的DEMO 创建WEB程序  之前咱们已经创建过WEB程序,并且成功的运行过数据 现在咱们创建一个页面,并显 ...

  8. IOS开发之—— 在AFN基础上进行的网络请求的封装

    网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...

  9. 《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序

    // Name: minimal.cpp // Purpose: Minimal wxWidgets sample // Author: Julian Smart #include "wx/ ...

随机推荐

  1. 利用python实现二分法和斐波那契序列

    利用python实现二分法:我的实现思路如下 1.判断要查找的值是否大于最大值,如果大于则直接返回False 2.判断要查找的值是否小于最小值,如果小于则直接返回False 3.如果要查找的值在最大值 ...

  2. [leetcode]174. Dungeon Game地牢游戏

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...

  3. 使用springmvc从页面中获取数据,然后根据获得的参数信息进行修改,如果修改的数据中含有不是基本数据类型的参数。比如传的参数中有Date类型的数据时,需要我们进行参数类型转换。

    1.1 需求 在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式. 1.2 需求分析 由于日期数据有很多格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑 ...

  4. Spring框架之CGLIB的代理技术(代码了解)

    1.引入CBLIB的开发包 * 如果想使用CGLIB的技术来生成代理对象,那么需要引入CGLIB的开发的jar包,在Spring框架核心包中已经引入了CGLIB的开发包了.所以直接引入Spring核心 ...

  5. Python3编程技巧

    高效处理数据类型方法: In []: from random import randint In []: data=[randint(-,) )] In []: data Out[]: [-, -, ...

  6. Boolean.getBoolean用法

    相信很多人被Boolean.getBoolean(String name)欺骗过,想当然的认为它是将"true"或者"false"转换为Boolean类型的AP ...

  7. livecd-creator: UnicodeEncodeError: 'ascii' codec can't encode characters in position 1282-1

    通过livecd-creator进行构建ISO过程中出现题目中错误, livecd-creator命令属于包livecd-tools 问题原因: 编码错误,初步判断应该与编码相关的环境变量设置有关 解 ...

  8. pycharm中的常用快捷键

    查找 Ctrl + F  替换 Ctrl + R 注释 Ctrl + /  去掉注释 Ctrl + / Function   Shortcut Use this shortcut to... Clos ...

  9. Laravel框架中实现supervisor执行异步进程

    问题描述:在使用Laravel框架实现动态网页时,若有些操作计算量较大,为了不影响用户体验,往往需要使用异步方式去处理.这里使用supervisor和laravel自带的queues实现. Super ...

  10. [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 ...