在POST / GET请求之后我得到了这个我需要解析的URL,当然我可以去使用spit()来获取所需的信息,但肯定应该是更优雅的方式。有什么想法吗?
http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123
我正在解析:access token
和expires_in
答案 0 :(得分:43)
使用URI课程,您可以这样做:
var url = new Uri("your url");
答案 1 :(得分:37)
使用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的引用
答案 2 :(得分:12)
有几种方法可以做到这一点。一个是您可以简单地使用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所展示的功能相同,但是将不同的功能分开,这样你就可以理解每件作品的功能。
<强>参考文献:强>