UrlUtils.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Specialized;
  4. namespace TapSDK.Core.Internal.Utils {
  5. public class UrlUtils {
  6. public static NameValueCollection ParseQueryString(string query) {
  7. NameValueCollection nvc = new NameValueCollection();
  8. if (query.StartsWith("?")) {
  9. query = query.Substring(1);
  10. }
  11. foreach (var param in query.Split('&')) {
  12. string[] pair = param.Split('=');
  13. if (pair.Length == 2) {
  14. string key = Uri.UnescapeDataString(pair[0]);
  15. string value = Uri.UnescapeDataString(pair[1]);
  16. nvc[key] = value;
  17. }
  18. }
  19. return nvc;
  20. }
  21. public static string ToQueryString(NameValueCollection nvc) {
  22. var array = (from key in nvc.AllKeys
  23. from value in nvc.GetValues(key)
  24. select $"{Uri.EscapeDataString(key)}={Uri.EscapeDataString(value)}"
  25. ).ToArray();
  26. return string.Join("&", array);
  27. }
  28. }
  29. }