Mega Code Archive

 
Categories / C# / Network
 

Convert to Query String from IDictionaryString, String

//Copyright (c) 2009, Offbeat Guides //All rights reserved. // //Redistribution and use in source and binary forms, with or without modification, are  //permitted provided that the following conditions are met: // //* Redistributions of source code must retain the above copyright notice, this list of  //conditions and the following disclaimer. // //* Redistributions in binary form must reproduce the above copyright notice, this list  //of conditions and the following disclaimer in the documentation and/or other materials  //provided with the distribution. // //* Neither the name of Offbeat Guides nor the names of its contributors may be used to  //endorse or promote products derived from this software without specific prior written  //permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY  //EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES  //OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT  //SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  //SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  //OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  //HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR  //TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,  //EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Net; using System.Security.Cryptography; namespace Amazon.Services {     public static class Utility     {         #region Static Methods         public static String ToQueryString(IDictionary<String, String> parameters)         {             StringBuilder data = new StringBuilder();             foreach (String key in parameters.Keys)             {                 if (parameters[key] != null)                     data.AppendFormat("{0}={1}&", key, Utility.UrlEncode(parameters[key]));             }             return data.Remove(data.Length - 1, 1).ToString();         }         public static String UrlEncode(String data)         {             StringBuilder encoded = new StringBuilder();             String unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";             foreach (char symbol in System.Text.Encoding.UTF8.GetBytes(data))             {                 if (unreservedChars.IndexOf(symbol) != -1)                     encoded.Append(symbol);                 else                     encoded.Append("%" + String.Format("{0:X2}", (int)symbol));             }             return encoded.ToString();         }         public static String EscapeXml(String str)         {             str = str.Replace("&", "&amp;");             str = str.Replace("<", "&lt;");             str = str.Replace(">", "&gt;");             str = str.Replace("'", "&#039;");             return str.Replace("\"", "&quot;");         }         public static String UnescapeXml(String str)         {             str = str.Replace("&quot;", "\"");             str = str.Replace("&#039;", "'");             str = str.Replace("&gt;", ">");             str = str.Replace("&lt;", "<");             return str.Replace("&amp;", "&");         }         #endregion     } }