[英]How to fix 400 Bad Request error?
I'm getting a The remote server returned an error: (400) Bad Request error when trying to run my code. 我收到了一个远程服务器返回错误:(400)尝试运行我的代码时出现错误请求错误。 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 JSON编辑
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();
can you try string postData = "[{ \\"username\\": \\"testname\\" },{ \\"password\\": \\"testpass\\" }]";
你可以试试
string postData = "[{ \\"username\\": \\"testname\\" },{ \\"password\\": \\"testpass\\" }]";
That way you are sending an array of 2 objects 这样你就可以发送一个包含2个对象的数组
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\\" }"
编辑 :也许你真正想要发送的只是一个有2个属性的对象,那么它将是
string postData = "{ \\"username\\": \\"testname\\", \\"password\\": \\"testpass\\" }"
postData is not a valid Json object postData不是有效的Json对象
{ "username": "testname" },{ "password": "testpass" }
Try to use a Json parser like Json.Net , JavaScriptSerializer or DataContractJsonSerializer instead of forming it manually 尝试使用Json.Net , JavaScriptSerializer或DataContractJsonSerializer之类的Json解析器,而不是手动形成它
It looks as though it may be coming from the JSON you are posting as it is invalid, see below what you are sending but in a valid form: 看起来它可能来自您发布的JSON,因为它无效,请参阅下面您发送的内容但是有效的形式:
{
"username": "testname",
"password": "testpass"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.