Я пытаюсь отправить некоторые данные из моего приложения Android на свой сервер, на котором запущен некоторый код фляжки. Я использую HTTPUrlConnection
, чтобы сделать запрос POST
на сервер Flask. Я смог создать REST API с помощью Flask, но я не уверен, почему моя связь Java с Python не работает. Я получаю следующее сообщение об ошибке "POST /signUp HTTP/1.1" 400 -
с сервера, из которого я не мог получить много (отладка включена в Flask). Как я должен передавать данные JSON на свой сервер и как должен интерпретировать этот код Flask?Java/Flask POST-запрос
Мой Java-код:
URL url = new URL(url);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoInput(true);
connection.setDoOutput(true);
OutputStream stream = connection.getOutputStream();
writer = new DataOutputStream(stream);
Log.d("WARN", getQuery(params));
// The LogCat prints out data like:
// ID:test,Email:[email protected],Pwd:test
writer.writeBytes(getQuery(params));
writer.flush();
writer.close();
stream.close();
// getQuery function aims to create a JSON string to send to the Flask server.
private String getQuery(List<Pair<String, String>> params)
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (Pair<String, String> pair : params)
{
if (first)
first = false;
else
result.append(",");
result.append(pair.first);
result.append(":");
result.append(pair.second);
}
return result.toString();
}
Мой серверный код:
@app.route("/signUp", methods=['POST'])
def signUp():
req_json = request.get_json()
g.cursor.execute("INSERT INTO test (ID, Email, Pwd) VALUES (%s,%s,%s)", (req_json['ID'], req_json['Email'], req_json['Pwd']))
g.conn.commit()
resp = Response("Updated", status=201, mimetype='application/json')
return resp
Благодарим за помощь. Я смог использовать «Google GSON» для сериализации объекта и передачи его в код Python. – Black