Не могу поставить с Android на DJANGO REST - PullRequest
1 голос
/ 29 октября 2019

В моей личной сети есть сервер DJANGO REST, настроенный на получение и получение строк JSON для обновления «статусов» для проекта, над которым я работаю. Я могу получить информацию в свое приложение Android просто отлично, но когда я пытаюсь передать информацию на сервер, я получаю сообщение об ошибке:

Плохой запрос: / api / users / 1 / [28/ Oct / 2019 21:23:23] "PUT / api / users / 1 / HTTP / 1.1" 400 107

Я думаю, что это приложение, потому что я могу успешно выполнить запрос PUT через Windows Powershell, но это не работает в приложении для 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 голосов
/ 29 октября 2019

Для тех, кто смотрит на это позже, я нашел проблему. Оказывается, что в Windows Powershell вы можете использовать одинарные кавычки в строке JSON, но вам НУЖНО использовать двойные кавычки с методами OKHTTP. Таким образом, я изменил:

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

на:

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

и все прошло идеально. Надеюсь, это кому-нибудь поможет.

...