How to fix 400 Bad Request error?

c#

Solution

can you try `string postData = "[{ \"username\": \"testname\" },{ \"password\": \"testpass\" }]";`

That way you are sending an array of 2 objects

Edit: Also maybe what you really want to send is just an object with 2 properties, then it would be `string postData = "{ \"username\": \"testname\", \"password\": \"testpass\" }"`

Problem

I'm getting a The remote server returned an error: (400) Bad Request error when trying to run my code. Any help would be appreciated. Thanks. ``` // 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(); } } ``` JSON EDIT Changed to: ``` { \"username\": \"jeff\", \"password\": \"welcome\" } ``` But still not working. EDIT This is what I found that works: ``` // 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(); ```

Original source