How to solve KeyError: 400 Bad Request

How to solve KeyError: 400 Bad Request

我有一个服务器,我想在 Java 中以 json 的形式向其发送 post 请求。但是在发送之后,它给出了答案:“KeyError: 400 Bad Request: 浏览器(或代理)发送了该服务器无法理解的请求。”。无论我如何更改数据,它仍然会报错,并且发送的请求不会出现在服务器上。我该如何解决这个问题?

    URL url = new URL("http://buldakovn.pythonanywhere.com/addStudent");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/json; utf-8");
    connection.setRequestProperty("Accept", "application/json");
    connection.setDoOutput(true);

    //request body
    String str1 = "{FName: " + name + ", LName: " + surname + ", VkId: " + vk + ", TelegrammId: " + telegram + ", Group: " + group+"}";

    OutputStream out = connection.getOutputStream();
    byte [] input = str1.getBytes(StandardCharsets.UTF_8);
    out.write(input, 0, input.length);
    out.close();

您需要做的第一件事是查看您要发布到的端点并确定它接受什么。我的意思是,您确定需要 json 吗?您确定您的负载是正确的吗?

确实没有办法解决它,要使用 API 你需要知道它期望什么。

其次,您的字符串 str1 不包含有效的 JSON,所以即使您的所有字段和类型都正确,这也行不通。

有效的 Json 将读作

{"FName": "someName", "LName": "someName"}

你有什么产生这个

{FName: someName, LName: someName}

注意到您的字符串中缺少引号了吗?甚至 Whosebug 解析器也不知道该怎么做:)