无法从Android投放到DJANGO REST

时间:2019-10-28 21:42:19

标签: android django django-rest-framework httpurlconnection okhttp

我的个人网络上有一个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方法所做的,但是当我这样做时,我什至没有得到服务器的响应。我已经尝试了十几种方法来将某些内容放入服务器,但是没有任何效果。任何帮助实现这一目标的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

收件人:

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

,一切顺利进行。希望这对某人有帮助。