Search code examples
c#windowsurluriencoding

Windows phone URL encoding issues(Windows phone)


A simple request to the server to get a file is giving some issues, Here's the url,

https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/* AND (genre like 'RoyalJatt.Com )')&sort=name+asc&start=1&count=2147483647

then i do this,

url = Uri.EscapeUriString(url);

i get,

https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/*%20AND%20(genre%20like%20'RoyalJatt.Com%20)')&sort=name+asc&start=1&count=2147483647

The problem here is this,

the query looks for a file with Genre RoyalJatt.Com%20) which should have been RoyalJatt.Com%20%29

For some reason, it is omitting the ")"

What can i do to fix this ?


Solution

  • Here's what i did and got it working.

        private readonly static string reservedCharacters = "!*'();:@&=+$,/?%#[]";`
    
        //Neither of Uri.EscapeUriString and Uri.EscapeDataString methods encodes 
        //the RFC 2396 unreserved characters If you need these encoded then you 
        //will have to manually encode them
        public static string UrlEncode(string value)
        {
            if (String.IsNullOrEmpty(value))
                return String.Empty;
    
            var sb = new StringBuilder();
    
            foreach (char @char in value)
            {
                if (reservedCharacters.IndexOf(@char) == -1)
                    sb.Append(@char);
                else
                    sb.AppendFormat("%{0:X2}", (int)@char);
            }
            return sb.ToString();
        }