как локальный сервер передал данные в приложении android - PullRequest
0 голосов
/ 27 мая 2020

Я хочу отправить json данные из android приложения на сервер

это json данные

  data = {"researcherID":"asdf","timestamp":"2020-05-27 15:36:42:902","weather":"Clouds","temperature":23.620000000000005,"humidity":"60","pm25":"16","pm10":"45"} 

Я бы хотел поработать над передачей этих данных на локальный сервер. Однако кажется, что значение не доставляется должным образом с этой ошибкой. Это ошибка

W/System.err: java.net.ProtocolException: cannot write request body after response has been read

мой сервер передал код данных

class SendDeviceDetails : AsyncTask<String?, Void?, String>() {
    override fun doInBackground(vararg params: String?): String {
        var data = ""
        var httpURLConnection: HttpURLConnection? = null
        try {
            httpURLConnection = URL(params[0]).openConnection() as HttpURLConnection
            httpURLConnection.setRequestProperty("Accept", "application/json")
            httpURLConnection.setRequestProperty("Content-Type", "application/json")
            httpURLConnection.requestMethod = "POST"
            httpURLConnection.doOutput = true
            httpURLConnection.doInput = true

            Timber.d("Test Checked is doInBackground url = ${params.get(0)} \n data = ${params.get(1)} \n responseCode = ${httpURLConnection.responseCode}")


            val wr = DataOutputStream(httpURLConnection.outputStream)
            wr.writeBytes("PostData=" + params.get(1))
            wr.flush()
            wr.close()

            val ins: InputStream = httpURLConnection.getInputStream()
            val inputStreamReader = InputStreamReader(ins)
            var inputStreamData: Int = inputStreamReader.read()

            while (inputStreamData != -1) {
                val current = inputStreamData.toChar()
                inputStreamData = inputStreamReader.read()
                data += current
                Timber.d("Test C ${current}")
            }
        } catch (e: Exception) {
            e.printStackTrace()
        } finally {
            httpURLConnection?.disconnect()
        }
        return data
    }
}

Ошибка исходит именно из этого кода

val wr = DataOutputStream(httpURLConnection.outputStream)

Не могли бы вы дать мне небольшой совет делать то, что я хочу делать? плз:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...