Elegant way parsing URL
Solution 1:
Using the URI class you can do this:
var url = new Uri("your url");
Solution 2:
Use Uri + ParseQueryString functions:
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");
This will also do the trick
String access_token = HttpUtility.ParseQueryString(myUri.Query).Get(0);
Source: https://msdn.microsoft.com/en-us/library/ms150046.aspx
Tip: You might need
using System.Web;
And add a reference to System.Web
Solution 3:
There are several ways you can do this. One is that you can simply use the Uri.Query
method to get the query string and then parse by the &s. Another is that you can use the Uri.Query
method and then use HttpUtility.ParseQueryString
to parse the query string as a NameValueCollection
, which might be your preferred route.
See the example below:
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);
You can now perform operations similar to how you would deal with a Dictionary
object. Like so:
string accessToken = queryParams["access_token"];
string expiresIn = queryParams["expires_in"];
This has the same functionality as what @Jeroen Bouman showed, but splits apart the different functions so you can understand what each piece does individually.
References:
Uri.Query
HttpUtility.ParseQueryString
NameValueCollection