先分享一个由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. 关于mybatis缓存配置详解

    一级缓存: 一级缓存是默认的. 测试:在WEB页面同一个查询执行两次从日志里面看同样的sql查询执行两次. 2次sql查询,看似我们使用了同一个sqlSession,但是实际上因为我们的dao继承了S ...

  2. Java数据类型与MySql数据类型对照表

    这篇文章主要介绍了Java数据类型与MySql数据类型对照表,以表格形式分析了java与mysql对应数据类型,并简单讲述了数据类型的选择与使用方法,需要的朋友可以参考下 本文讲述了Java数据类型与 ...

  3. 爬楼梯 · Climbing Stairs

    [抄题]: 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? [思维问题]: 不知道一步.两步怎么加.还是用iteration迭代.此题公式可被 ...

  4. [leetcode]125. Valid Palindrome判断回文串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  5. UI设计:掌握这6点,轻松0到1

    非科班出身能成为UI设计师吗? 答案是肯定的.世上无难事,只怕有心人.只要找对方法.坚持不懈,即便是零基础也能学好UI设计. 那么零基础学习UI设计,需要学习哪些知识?我们要从哪些地方学起?怎么系统学 ...

  6. oracle去重试验

    http://blog.csdn.net/lunajiao/article/details/76014488

  7. break MISSING_BLOCK_LABEL_160; 看源代码出现的,源代码是反编译的

    break MISSING_BLOCK_LABEL_160; FileNotFoundException fnfe; fnfe; out.close(); throw fnfe; in.close() ...

  8. android触控,先了解MotionEvent(一)

    http://my.oschina.net/banxi/blog/56421 这是我个人的看法,要学好android触控,了解MotionEvent是必要,对所用的MotionEvent常用的API要 ...

  9. js实现a_b变成A B的两种方法

    1.var key = 'a_b'; var a = key.replace(/\b.|_./g, function (i) { if (i.length === 2) { i = ' ' + i[1 ...

  10. 2018.09.26 洛谷P2464 [SDOI2008]郁闷的小J(map+vector)

    传送门 本来出题人出出来想考数据结构的. 但是我们拥有map+vector/set这样优秀的STL,因此直接用map离散化,vector存下标在里面二分找答案就行了. 代码: #include< ...