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) 

Подозреваю, что надо вызывать как то по другому, из другого потока, но как именно не знаю. Подскажите пожалуйста.


Ответы (0 шт):