JSON в Java по почте, не получая возврата None

#java #python #json #post

#java #python #json #Публикация

Вопрос:

Я запрашиваю POST с помощью этого кода

                     URL url = new URL("adress/discordnotifi");

                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

                    httpURLConnection.setReadTimeout(5000);

                    httpURLConnection.setConnectTimeout(5000);

                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.connect();
                    JSONObject object = new JSONObject();
                    myPWord = ((EditText) (findViewById(R.id.edit_Id))).getText().toString();
                    object.put("token", tokens);
                    object.put("discordid", mydiscord);

                    OutputStream outputStream = httpURLConnection.getOutputStream();
                    outputStream.write(object.toString().getBytes("UTF-8"));

                    Log.d("debug",object.toString());
                    outputStream.flush();
                    outputStream.close();
  

и мои токены и mydiscord — это информация, которую я хочу отправить в формате JSON, например
{"token":"tokens","discordid":"mydiscord"}

и из python flask

 @app.route('/discordnotifi', methods=['POST'])
def post():
    content = request.json
    print(content)
    Discordid = int(content["discordid"])
    token = content['token']
    """Discordid = request.form.get("discordid")
    token = request.form.get("token")"""
    print(Discordid, token)
    return ("Thx")
  

при печати (содержимого) Я получаю None Я действительно не знаю, что здесь не так. Я планировал отправить Json с информацией, но я не получаю ничего из Json.

Ответ №1:

Самое меньшее, чего вам не хватает, это включить вывод при соединении. Добавить:

 httpURLConnection.setDoOutput(true);
  

Сервер также может потребовать, чтобы вы установили некоторые заголовки, например content-type , чтобы сообщить ему, что вы отправляете JSON.

 httpURLConnection.setRequestProperty("Content-Type", "application/json; utf-8");
  

Если вы можете использовать Java 11, рассмотрите возможность использования нового класса HttpClient вместо HttpURLConnection. Это упрощает создание правильных запросов.