kotlin(Android) ошибка при отправки запроса на сервер
При нажатии копки Login выполняется функция:
fun goUserAccount(view: View) {
val login = SpannableString.valueOf(findViewById<TextView>(R.id.login_user).text)
val password = SpannableString.valueOf(findViewById<TextView>(R.id.password_user).text)
val credentials = login.toString() + password.toString()
val hashCredentials = byteArrayToHexString(MessageDigest.getInstance("SHA-1")
.digest(credentials.toByteArray()).toTypedArray())
var reqParam = URLEncoder.encode("hashCredentials", "UTF-8") + "=" + URLEncoder.encode(hashCredentials.toString(), "UTF-8")
AsyncRequest().execute("/login?", reqParam)
val userAccount = Intent(this, MainActivity::class.java)
startActivity(userAccount)
В ней вызывается AsyncRequest().execute("/login?", reqParam):
internal class AsyncRequest : AsyncTask<String, Int, String>() {
override fun doInBackground(vararg p0: String?): String {
val mURL = URL("http://192.168.0.22:8080" + p0[0] + p0[1])
with(mURL.openConnection() as HttpURLConnection) {
requestMethod = "GET"
println("URL : $url")
println("Response Code : $responseCode")
BufferedReader(InputStreamReader(inputStream)).use {
val response = StringBuffer()
var inputLine = it.readLine()
while (inputLine != null) {
response.append(inputLine)
inputLine = it.readLine()
}
it.close()
println("Response : $response")
}
}
return "";
}
}
Приложение падает на строчке println("Response Code : $responseCode") с ошибкой:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.mugan86.qrscanner, PID: 3125
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$4.done(AsyncTask.java:415)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.net.SocketException: socket failed: EPERM (Operation not permitted)
at java.net.Socket.createImpl(Socket.java:492)
at java.net.Socket.getImpl(Socket.java:552)
at java.net.Socket.setSoTimeout(Socket.java:1180)
at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143)
at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at com.mugan86.qrscanner.AuthActivity$AsyncRequest.doInBackground(AuthActivity.kt:58)
at com.mugan86.qrscanner.AuthActivity$AsyncRequest.doInBackground(AuthActivity.kt:50)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Подозреваю, что надо вызывать как то по другому, из другого потока, но как именно не знаю. Подскажите пожалуйста.