title: How to fix 400 Bad Request error?
body: <p>I'm getting a <em>The remote server returned an error: (400) Bad Request</em> error when trying to run my code. Any help would be appreciated. Thanks.</p>
  
  <pre><code>    // Open request and set post data
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("myurl.com/restservice/Login");
      request.Method = "POST";
      request.ContentType = "application/json; charset:utf-8";
      string postData = "{ \"username\": \"testname\" },{ \"password\": \"testpass\" }";
  
      // Write postData to request url
      using (Stream s = request.GetRequestStream())
      {
          using (StreamWriter sw = new StreamWriter(s))
              sw.Write(postData);
      }
  
      // Get response and read it
      using (Stream s = request.GetResponse().GetResponseStream()) // error happens here
      {
          using (StreamReader sr = new StreamReader(s))
          {
              var jsonData = sr.ReadToEnd();
          }
      }
  </code></pre>
  
  <p><strong>JSON EDIT</strong></p>
  
  <p>Changed to:</p>
  
  <pre><code>{ \"username\": \"jeff\", \"password\": \"welcome\" }
  </code></pre>
  
  <p>But still not working.</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>This is what I found that works:</p>
  
  <pre><code>       // Open request and set post data
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("myurl.com/restservice/Login");
      request.Method = "POST";
      request.ContentType = "application/json";
      string postData = "{ \"username\": \"testname\", \"password\": \"testpass\" }";
  
      // Set postData to byte type and set content length
      byte[] postBytes = System.Text.UTF8Encoding.UTF8.GetBytes(postData);
      request.ContentLength = postBytes.Length;
  
      // Write postBytes to request stream
      Stream s = request.GetRequestStream();
      s.Write(postBytes, 0, postBytes.Length);
      s.Close();
  
      // Get the reponse
      WebResponse response = request.GetResponse();
  
      // Status for debugging
      string ResponseStatus = (((HttpWebResponse)response).StatusDescription);
  
      // Get the content from server and read it from the stream
      s = response.GetResponseStream();
      StreamReader reader = new StreamReader(s);
      string responseFromServer = reader.ReadToEnd();
  
      // Clean up and close
      reader.Close();
      s.Close();
      response.Close();
  </code></pre>