无法从 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);
一切都很顺利。希望这对某人有所帮助。
我的个人网络上有一个 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);
一切都很顺利。希望这对某人有所帮助。