Ohne zusätzliche Abhängigkeiten hinzuzufügen, funktioniert dies. Dafür brauchst du keinen Volley. Dies funktioniert mit der aktuellen Version von Kotlin ab Dezember 2018: Kotlin 1.3.10
Wenn Sie Android Studio verwenden, müssen Sie diese Deklaration in Ihre AndroidManifest.xml einfügen:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Sie sollten Importe hier manuell deklarieren. Das Auto-Import-Tool hat mir viele Konflikte verursacht:
import android.os.AsyncTask
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.OutputStream
import java.io.OutputStreamWriter
import java.net.URL
import java.net.URLEncoder
import javax.net.ssl.HttpsURLConnection
Sie können keine Netzwerkanforderungen für einen Hintergrundthread ausführen. Sie müssen Unterklasse AsyncTask.
So rufen Sie die Methode auf:
NetworkTask().execute(requestURL, queryString)
Erklärung:
private class NetworkTask : AsyncTask<String, Int, Long>() {
override fun doInBackground(vararg parts: String): Long? {
val requestURL = parts.first()
val queryString = parts.last()
val connection: HttpsURLConnection = URL(requestURL).openConnection() as HttpsURLConnection
connection.requestMethod = "POST"
connection.doOutput = true
val outputStream: OutputStream = connection.outputStream
val outputWriter = OutputStreamWriter(outputStream)
outputWriter.write(queryString)
outputWriter.flush()
val inputStream = BufferedReader(InputStreamReader(connection.inputStream)).use {
val response = StringBuffer()
var inputLine = it.readLine()
while (inputLine != null) {
response.append(inputLine)
inputLine = it.readLine()
}
it.close()
println(">>>> Response: $response")
}
connection.disconnect()
return 0
}
protected fun onProgressUpdate(vararg progress: Int) {
}
override fun onPostExecute(result: Long?) {
}
}