解析URL的优雅方式

本文关键字:方式 URL 解析 | 更新日期: 2023-09-27 18:06:29

POST/GET请求后,我得到了需要解析的URL,当然我可以使用spit()来获取所需的信息,但肯定应该是更优雅的方式。什么好主意吗?

http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123

我正在解析:access tokenexpires_in

解析URL的优雅方式

使用URI类可以这样做:

var url = new Uri("your url");

使用Uri + ParseQueryString函数:

Uri myUri = new Uri("http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123");
String access_token = HttpUtility.ParseQueryString(myUri.Query).Get("access_token");
String expires_in = HttpUtility.ParseQueryString(myUri.Query).Get("expires_in");

String access_token = HttpUtility.ParseQueryString(myUri.Query).Get(0);

来源:https://msdn.microsoft.com/en-us/library/ms150046.aspx

提示:您可能需要
using System.Web;

并添加对System的引用。Web

有几种方法可以做到这一点。一种方法是,您可以简单地使用Uri.Query方法来获取查询字符串,然后通过&s进行解析。另一种方法是,您可以使用Uri.Query方法,然后使用HttpUtility.ParseQueryString将查询字符串解析为NameValueCollection,这可能是您首选的路由。

参见下面的例子:

using System.Web; // For HttpUtility
// The original URL:
Uri unparsedUrl = new Uri("http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123");
// Grabs the query string from the URL:
string query = unparsedUrl.Query; 
// Parses the query string as a NameValueCollection:
var queryParams = HttpUtility.ParseQueryString(query);

现在可以执行类似于处理Dictionary对象的操作。像这样:

string accessToken = queryParams["access_token"];
string expiresIn = queryParams["expires_in"];

这与@Jeroen Bouman所展示的功能相同,但将不同的功能分开,以便您可以理解每个部分单独做什么。

引用:

Uri。查询

HttpUtility。ParseQueryString

NameValueCollection

这有点晚了,但是从。net 6开始,

 Uri.TryCreate (string? uriString, UriKind uriKind, out Uri? result);

应该毫无例外地帮助解析。

更多关于MS Learn