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)键值对


获取ip/端口/uri

来源:https://my.oschina.net/fuweiwei/blog/299316?p=1 request方法客户端IP: request.getRemoteAddr() 输出...
  • aosica321
  • aosica321
  • 2017年01月18日 19:35
  • 223

根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换

public static String getImageAbsolutePath(Activity activity, Uri imageUri){ Uri uri = null; if...
  • q445697127
  • q445697127
  • 2014年10月28日 11:32
  • 35583

Android中本地图片地址和Uri的相互装换

Android中本地图片地址和Uri的相互装换 前言: 项目中我们在用到手机中的相片的时候,因为需求不同,手机型号不同,我们需要将获取到的路径转成uri,或者将获取到的uri转成绝对路径。比如我的...
  • u010041075
  • u010041075
  • 2016年12月12日 17:16
  • 3236

Android 4.4以上 根据uri获取路径的方法

当我们选择图片以后,返回的是Uri,此时我们要把路径存储到数据库,必须将其转换成String类型。 URI:  //content://com.android.providers.media.d...
  • wuzuyu365
  • wuzuyu365
  • 2016年11月04日 17:44
  • 756

Android 读取拍照或相册uri 转换成图片的绝对路径

String imagePath = ""; String[] proj = { MediaStore.Images.Media.DATA }; Cur...
  • qq_34476727
  • qq_34476727
  • 2017年02月17日 11:52
  • 1105

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

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

使用js获取QueryString的方法小结

一. urlinfo=window.location.href; //获取当前页面的url len=urlinfo.length;//获取url的长度 offset=urlinfo.indexO...
  • orichisonic
  • orichisonic
  • 2014年09月29日 14:30
  • 14320

NodeJS基础:querystring 模块的使用

NodeJS基础:querystring 模块的(反)序列化与(反)转义的使用nodejs 中的 querystring 模块具有序列化与反序列化,转义与反转义的两组功能。querystring.st...
  • Divide_
  • Divide_
  • 2016年09月07日 22:26
  • 1325

android使用获取所有应用的资源id和uri

一.获取资源的id 二.获取资源的uri 在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射反射方式获得,但Resources类中也自带了这种...
  • d_o_n_g2
  • d_o_n_g2
  • 2016年05月30日 17:16
  • 719

redis常用命令及高级应用之键值的相关命令

keys返回满足给定pattern的所有key例如:返回所有键127.0.0.1:6379> keys * 1) "list3" 2) "myset5" 3) "list6" 4) "myse...
  • qq_28602957
  • qq_28602957
  • 2016年09月27日 20:18
  • 2520
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WinRT中如何快速获取Uri地址中的QueryString键值对信息
举报原因:
原因补充:

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