无法从 Android 放入 DJANGO REST

Can't PUT from Android to DJANGO REST

我的个人网络上有一个 DJANGO REST 服务器,它设置为获取和接收 JSON 字符串以更新 "statuses" 我正在处理的项目。我可以很好地将信息 GET 到我的 Android 应用程序中,但是当我尝试将信息 PUT 到服务器时,出现错误:

Bad Request: /api/users/1/ [28/Oct/2019 21:23:23] "PUT /api/users/1/ HTTP/1.1" 400 107

我认为是应用程序,因为我可以通过 Windows Powershell 成功执行 PUT 请求,但它不适用于 Android 应用程序。这是使用 OKHTTP class:

的代码
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
String content = String.format("{'status':%s}", selectedStatus);
RequestBody body = RequestBody.create(JSON, content);

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
        .url(IPAddress + "api/users/" + currentUserID + "/")
        .addHeader("Content-Type", "application/json")
        .put(body) //PUT
        .build();

client.newCall(request).execute();

我已经尝试使用标准的 HttpURLConnection class,这是我为 GET 方法所做的,但是当我这样做时我什至没有得到服务器的响应。我已经尝试了十几种方法将一些东西放到服务器上,但没有任何效果。任何帮助实现这一目标的帮助将不胜感激。谢谢

对于后来查看此内容的任何人,我发现了问题所在。事实证明,在 Windows Powershell 中,您可以在 JSON 字符串中使用单引号,但您需要在 OKHTTP 方法中使用双引号。因此,我改变了:

String content = String.format("{'status':%s}", selectedStatus);

至:

String content = String.format("{\"status\":%s}", selectedStatus);

一切都很顺利。希望这对某人有所帮助。