В StackOverflow много вопросов для отправки одного POST-запроса на Android, но ни один из них не охватывает случаи, когда вы получаете много данных от датчика, подключенного к вашему телефону, и вам нужно отправить запрос этих данных как Вы получаете это.
Я получаю данные от датчика, подключенного к моему Android, и мне необходимо отправить их на сервер Flask, расположенный на Heroku.
public void sendToFlask(JSONObject jsonParam) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("URLHERE");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestProperty("Accept","application/json");
conn.setDoOutput(true);
conn.setDoInput(true);
Log.i("JSON", jsonParam.toString());
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
//os.writeBytes(URLEncoder.encode(jsonParam.toString(), "UTF-8"));
os.writeBytes(jsonParam.toString());
os.flush();
os.close();
Log.i("STATUS", String.valueOf(conn.getResponseCode()));
Log.i("MSG" , conn.getResponseMessage());
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
});
Этот код, к сожалению, содержит ошибки для создания too many files
Я понимаю, что решение здесь может заключаться в использовании глобального HttpURLConnection
, но, к сожалению, это также дает мне ошибку java.net.ProtocolException: cannot write request body after response has been read
Это происходит после того, как я перемещаю conn
и url
переменные в глобальной области видимости и установите их в onCreate