Я получаю исключение 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 часа только на это.
Также дайте мне знать, если какая-либо информация необходима.
Заранее спасибо.