我的个人网络上有一个DJANGO REST服务器,该服务器设置为获取和接收JSON字符串以更新我正在处理的项目的“状态”。我可以很好地将信息下载到我的Android应用程序中,但是当我尝试将信息放置到服务器上时,出现错误:
错误请求:/ api / users / 1 / [28 / Oct / 2019 21:23:23]“ PUT / api / users / 1 / HTTP / 1.1” 400107
我认为它是该应用程序,因为我可以通过Windows Powershell成功执行PUT请求,但在Android应用程序上却无法使用。这是使用OKHTTP类的代码:
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类,这是我对GET方法所做的,但是当我这样做时,我什至没有得到服务器的响应。我已经尝试了十几种方法来将某些内容放入服务器,但是没有任何效果。任何帮助实现这一目标的帮助将不胜感激。谢谢。
答案 0 :(得分:1)
对于以后再看此书的人,我发现了问题。事实证明,在Windows Powershell中,可以在JSON字符串中使用单引号,但需要在OKHTTP方法中使用双引号。因此,我改变了:
String content = String.format("{'status':%s}", selectedStatus);
收件人:
String content = String.format("{\"status\":%s}", selectedStatus);
,一切顺利进行。希望这对某人有帮助。