Elegant way parsing URL

后端 未结 3 958
伪装坚强ぢ
伪装坚强ぢ 2020-12-03 09:39

After POST/GET request I get such URL back which I need to parse, of course I can go and use spit() to get required information, but for sure should be more elegant way of d

相关标签:
3条回答
  • 2020-12-03 10:06

    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

    0 讨论(0)
  • 2020-12-03 10:16

    Using the URI class you can do this:

    var url = new Uri("your url");
    
    0 讨论(0)
  • 2020-12-03 10:16

    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

    0 讨论(0)
提交回复
热议问题