title: HttpWebRequest doesn't send the + (plus) char
body: <p>I'm trying to send a base64 encoded data using a POST request and it contains the "+" char. When I send the request, the "+" is replaced with " " (space). Here goes the code  </p>
  
  <pre><code>    public string POST(string url, string query)
      {
          HttpWebRequest hwrq = CreateRequest(url);
          hwrq.CookieContainer = Cookies;
          hwrq.Method = "POST";
          hwrq.ContentType = "application/x-www-form-urlencoded";
          byte[] data = Encoding.Default.GetBytes(query);
          hwrq.ContentLength = data.Length;
          hwrq.GetRequestStream().Write(data, 0, data.Length);
          using (HttpWebResponse hwrs = (HttpWebResponse)hwrq.GetResponse())
          {
              using (StreamReader sr = new StreamReader(hwrs.GetResponseStream()))
              {
                  return sr.ReadToEnd().Trim();
              }
          }
      }
  
      public HttpWebRequest CreateRequest(string url)
      {
          HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url);
          Request.UserAgent = UserAgent;
          Request.Accept = Accept;
          Request.Headers.Add("Accept-Language", AcceptLang);
          Request.AutomaticDecompression = DMethod;
          return Request;
      }
  </code></pre>
  
  <p>I've been tracking the "query" variable, it stays with the "+" char, but when I see the request in sniffer (Charles), the request is sent without the "+".<br>
  For example I'm trying to send </p>
  
  <blockquote>
    <p>&lt;...>zxJ+zZq&lt;...></p>
  </blockquote>
  
  <p>and </p>
  
  <blockquote>
    <p>&lt;...>zxJ zZq&lt;...></p>
  </blockquote>
  
  <p>is actually sent.<br>
  What am I doing wrong?<br>
  Thanks in advance.</p>