Kotlin Ошибка: java.lang.NoSuchFieldException: нет хоста поля в классе Ljava / net / URL; - PullRequest
0 голосов
/ 20 марта 2019

Я получаю исключение NoSuchFieldException при попытке вызвать API с помощью Kotlin в Android Studio. Я много гуглил и не мог понять, какое поле здесь отсутствует. Потому что мне нужно сделать прямой вызов API без каких-либо параметров.

Ex: https://postman-echo.com/get

Возвращает Json

{
"args": {},
"headers": {
    "x-forwarded-proto": "https",
    "host": "postman-echo.com",
    "accept": "*/*",
    "accept-encoding": "gzip, deflate",
    "cache-control": "no-cache",
    "cookie": "sails.sid=s%3Apn2OQMhtxox3x5pUbyPEYWTlYO7-xWNU.7FANTaY20nDA3H97CkBoKjEX5TvXVEdYb1hsrWuFnmQ",
    "postman-token": "78d38646-9633-43cb-8291-2d00451e79db",
    "user-agent": "PostmanRuntime/7.6.1",
    "x-forwarded-port": "443"
},
"url": "https://postman-echo.com/get"

}

Ниже приведен мой исходный код и трассировка стека после выполнения.

Исходный код

val response : Response = khttp.get("https://postman-echo.com/get")
    val obj:JSONObject=response.jsonObject
    print(obj["user-agent"])

Трассировка стека

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myassessment, PID: 7019
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myassessment/com.example.myassessment.StudentActivity}: java.lang.NoSuchFieldException: No field host in class Ljava/net/URL; (declaration of 'java.net.URL' appears in /system/framework/core-oj.jar)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
 Caused by: java.lang.NoSuchFieldException: No field host in class Ljava/net/URL; (declaration of 'java.net.URL' appears in /system/framework/core-oj.jar)
    at java.lang.Class.getDeclaredField(Native Method)
    at khttp.requests.GenericRequest.toIDN(GenericRequest.kt:193)
    at khttp.requests.GenericRequest.makeRoute(GenericRequest.kt:198)
    at khttp.requests.GenericRequest.<init>(GenericRequest.kt:128)
    at khttp.KHttp.request(KHttp.kt:58)
    at khttp.KHttp.get(KHttp.kt:28)
    at khttp.KHttp.get$default(KHttp.kt:27)
    at com.example.myassessment.StudentActivity.onCreate(StudentActivity.kt:22)
    at android.app.Activity.performCreate(Activity.java:7136)
    at android.app.Activity.performCreate(Activity.java:7127)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:193) 
    at android.app.ActivityThread.main(ActivityThread.java:6669) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
I/Process: Sending signal. PID: 7019 SIG: 9
Application terminated.

К вашему сведению, я использую Android 9.0 в качестве SDK. Пожалуйста, дайте мне знать, мисс здесь. Потратил почти 4 часа только на это. Также дайте мне знать, если какая-либо информация необходима. Заранее спасибо.

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