gpt4 book ai didi

android - 无法从 Android PUT 到 DJANGO REST

转载 作者:行者123 更新时间:2023-11-29 22:45:05 25 4
gpt4 key购买 nike

我的个人网络上有一个 DJANGO REST 服务器,它设置为获取和接收 JSON 字符串以更新我正在处理的项目的“状态”。我可以很好地将信息 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 类的代码:

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

最佳答案

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

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

到:

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

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

关于android - 无法从 Android PUT 到 DJANGO REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com