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

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

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

不同浏览器对URI以及queryString是如何编码的?

jsp页面中通过请求另一个页面并通过url传递了带有中文的参数,结果在接收端获取参数时乱码了 经检查乱码现象指出新在IE浏览器中,其他浏览器火狐、chrome等不会有问题 最后的解决方式是...

JS获取URL中参数值(QueryString)的方法

** 今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split(“?”)这样一步步的分解出需要的参数。后来想了一下,肯定会有更加简单的方法的!所以在网上找到...

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

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

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

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

快速取键值...v1.03

  • 2006年03月16日 00:00
  • 392KB
  • 下载

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

import java.net.URI; public class URItest2 { public static void main(String[] args){ try{ ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WinRT中如何快速获取Uri地址中的QueryString键值对信息
举报原因:
原因补充:

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