UrlEncodedParameterWriter.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //
  2. // System.Web.Services.Protocols.UrlEncodedParameterWriter.cs
  3. //
  4. // Author:
  5. // Tim Coleman ([email protected])
  6. // Lluis Sanchez Gual ([email protected])
  7. //
  8. // Copyright (C) Tim Coleman, 2002
  9. //
  10. using System.IO;
  11. using System.Text;
  12. using System.Web.Services;
  13. using System.Web;
  14. using System.Reflection;
  15. namespace System.Web.Services.Protocols {
  16. public abstract class UrlEncodedParameterWriter : MimeParameterWriter {
  17. Encoding requestEncoding;
  18. ParameterInfo[] parameters;
  19. #region Constructors
  20. protected UrlEncodedParameterWriter ()
  21. {
  22. }
  23. #endregion // Constructors
  24. #region Properties
  25. public override Encoding RequestEncoding {
  26. get { return requestEncoding; }
  27. set { requestEncoding = value; }
  28. }
  29. #endregion // Properties
  30. #region Methods
  31. protected void Encode (TextWriter writer, object[] values)
  32. {
  33. for (int n=0; n<values.Length; n++)
  34. {
  35. if (n>0) writer.Write ("&");
  36. Encode (writer, parameters[n].Name, values[n]);
  37. }
  38. }
  39. protected void Encode (TextWriter writer, string name, object value)
  40. {
  41. if (requestEncoding != null)
  42. {
  43. writer.Write (HttpUtility.UrlEncode (name, requestEncoding));
  44. writer.Write ("=");
  45. writer.Write (HttpUtility.UrlEncode (value.ToString(), requestEncoding));
  46. }
  47. else
  48. {
  49. writer.Write (HttpUtility.UrlEncode (name));
  50. writer.Write ("=");
  51. writer.Write (HttpUtility.UrlEncode (value.ToString()));
  52. }
  53. }
  54. public override object GetInitializer (LogicalMethodInfo methodInfo)
  55. {
  56. if (methodInfo.OutParameters.Length > 0) return null;
  57. else return methodInfo.Parameters;
  58. }
  59. public override void Initialize (object initializer)
  60. {
  61. parameters = (ParameterInfo[]) initializer;
  62. }
  63. #endregion // Methods
  64. }
  65. }