如何修复400错误请求错误

本文关键字:错误 请求 何修复 | 更新日期: 2023-09-27 18:31:08

我收到一个 远程服务器返回错误:(400) 尝试运行我的代码时出现错误请求错误。任何帮助将不胜感激。谢谢。

    // 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();
        }
    }

杰伦编辑

更改为:

{ '"username'": '"jeff'", '"password'": '"welcome'" }

但仍然不起作用。

编辑

这是我发现有效的:

       // 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();

如何修复400错误请求错误

你能试试string postData = "[{ '"username'": '"testname'" },{ '"password'": '"testpass'" }]";

这样您就可以发送一个包含 2 个对象的数组

编辑:也许您真正想要发送的只是一个具有 2 个属性的对象,那么它将string postData = "{ '"username'": '"testname'", '"password'": '"testpass'" }"

看起来它可能来自您发布的 JSON,因为它是无效的,请参阅下面您发送的内容,但形式有效:

{
    "username": "testname",
    "password": "testpass"
}

postData 不是有效的 Json 对象

{ "username": "testname" },{ "password": "testpass" }

尝试使用Json解析器,如 Json.Net,JavaScriptSerializer或DataContractJsonSerializer,而不是手动形成它