WinRT中如何快速获取Uri地址中的QueryString键值对信息

原创 2015年07月08日 22:31:02

在WinRT中,往往涉及到获取网络资源或者截取网址信息的情形,因此跟Uri打交道的情况就比较多了。而一般情况

下需要快速准确地获取网址资源中某些特定的QueryString信息,那么选择工具是尤其重要的了。

而在WinRT中,利用WwwFormUrlDecoder类就可以完美解决问题。直接贴上代码说明一切:

XAML:

<Page
    x:Class="GetUriQueryString.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:GetUriQueryString"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock Text="测试Uri:" FontSize="25"/>
            <TextBlock Text="http://blog.csdn.net/u010792238?viewmode=contents" FontSize="20" TextWrapping="WrapWholeWords"></TextBlock>
            <Button x:Name="getUriQueryString" Content="获取" Click="getUriQueryString_Click"/>
            <TextBlock Text="结果:" FontSize="25"/>
            <TextBlock x:Name="result" FontSize="30"/>
        </StackPanel>       
    </Grid>
</Page>

.CS:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=391641 上有介绍

namespace GetUriQueryString
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;
        }

        /// <summary>
        /// 在此页将要在 Frame 中显示时进行调用。
        /// </summary>
        /// <param name="e">描述如何访问此页的事件数据。
        /// 此参数通常用于配置页。</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: 准备此处显示的页面。

            // TODO: 如果您的应用程序包含多个页面,请确保
            // 通过注册以下事件来处理硬件“后退”按钮:
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件。
            // 如果使用由某些模板提供的 NavigationHelper,
            // 则系统会为您处理该事件。
        }

        private void getUriQueryString_Click(object sender, RoutedEventArgs e)
        {
            //可以将要获取的信息粗略的看成键值对,一一对应即可。比如viewmode对应的是contents
            Uri uri = new Uri("http://blog.csdn.net/u010792238?viewmode=contents");
            WwwFormUrlDecoder decoder = new WwwFormUrlDecoder(uri.Query);
            //获取viewmode键对应的值
            var viewmode = decoder.GetFirstValueByName("viewmode");
            result.Text = viewmode;
            //循环获取键值
            foreach(var keyValue in decoder)
            {
                //键
                var key = keyValue.Name;
                //值
                var value = keyValue.Value;
            }  
        }
    }
}

当然就不同的语言环境,微软有不同的封装类来帮助程序员。在Console等应用中,可以使用NameValueCollection

类来获取。

Uri uri = new Uri("http://blog.csdn.net/u010792238?viewmode=contents");
NameValueCollection nvc= HttpUtility.ParseQueryString(uri.Query);
for (int index = 0; index < nvc.Count; index++)
{

    var name = nvc.Keys[index];  //键
    var value = nvc[index];           //值
}


推荐链接:【WinRT】获取 Uri 中的参数(QueryString)键值对


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

正则表达式提取Url中QueryString键值(搜索关键字的提取)

起始:流量统计系统中衍生的小功能 目的:提取Url中Querystring指定键的值 BETA: (?key\=).*?(?=\&|$) 加强: (?key\=).*?(?=\&|$) 示例代...

JavaScript将url地址快速变成键值对的JavaScript对象形式

这是一个高端的,逼格爆表的JavaScript正则表达式及字符串匹配函数的综合应用。 本人非常受教,链接来自 http://jingyan.baidu.com/article/870c6fc30e0...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

asp.net 信息管理系统中的需填写数据的键值对获取方法

问题描述: 在信息管理系统中,通常要采集大量的数据,然后把数据写入数据库中,如何进行一次输入数据库对应字段,可以在数据的采集,以及数据的回显 阶段都能使用呢?当然,是能做到的。asp.net中C#...

js中自定义QueryString方法,获取url中的参数值

在js中,怎么获取url中传递的参数,请看下面的代码: function QueryString(key) { var reg= new RegExp (key + "=...

云客Drupal8源码分析之状态信息state及键值储存系统

在drupal中的信息可以分为四类: 内容Content: 用于被显示的内容,文章、新闻、基本页、图片、文件、自定义块等等,内容的储存和访问是通过实体Entities来进行的 会话Session...

19. 3. 1. URI与URL获取主机信息 All Headers

import java.net.URI; public class URItest2 { public static void main(String[] args){ try{ ...

Spark快速大数据分析系列之第四章键值对操作

动机 键值对形式的RDD提供了新的强大的操作接口键值对形式的RDD具有一个重要特性:分区。一些情况下可以显著提升性能 创建Pair RDD 读取外部数据时:如果外部数据本身是键值对形式的,读取回来...

【4招搞定注册表键值快速定位】

注册表是个重要而又神秘的东东,出于种种目的,我们可能时常需要对其进行修改。不过注册表文件比较庞大,而我们需要修改的键值一般都隐藏得比较深,如何快速定位到需要修改的地方就成了一个必须掌握的技巧。本文就向...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)