Я пытаюсь получить данные из API, но получаю следующую ошибку. Я не могу выяснить, в чем проблема. Я использую отдельный поток пользовательского интерфейса для получения данных, после чего приложение выходит из строя.
2020-02-20 17:20:01.088 22802-22802/com.example.flypped E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.flypped, PID: 22802
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
at com.android.org.conscrypt.Platform.blockGuardOnNetwork(Platform.java:415)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:560)
at okio.InputStreamSource.read(Okio.kt:102)
at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:159)
at okio.RealBufferedSource.request(RealBufferedSource.kt:62)
at okio.RealBufferedSource.require(RealBufferedSource.kt:55)
at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.kt:299)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.kt:450)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.kt:429)
at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:279)
at okio.RealBufferedSource.select(RealBufferedSource.kt:93)
at okhttp3.internal.Util.readBomAsCharset(Util.kt:256)
at okhttp3.ResponseBody.string(ResponseBody.kt:187)
at com.example.flypped.MainActivity$2$1.run(MainActivity.java:110)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7156)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Suppressed: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
at com.android.org.conscrypt.Platform.blockGuardOnNetwork(Platform.java:415)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:560)
at okio.InputStreamSource.read(Okio.kt:102)
at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:159)
at okio.RealBufferedSource.request(RealBufferedSource.kt:62)
at okio.RealBufferedSource.require(RealBufferedSource.kt:55)
at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.kt:299)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.kt:450)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.kt:429)
at okhttp3.internal.Util.skipAll(Util.kt:337)
at okhttp3.internal.Util.discard(Util.kt:358)
at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.close(Http1ExchangeCodec.kt:471)
at okio.ForwardingSource.close(ForwardingSource.kt:34)
at okhttp3.internal.connection.Exchange$ResponseBodySource.close(Exchange.kt:306)
at okio.RealBufferedSource.close(RealBufferedSource.kt:461)
at kotlin.io.CloseableKt.closeFinally(Closeable.kt:56)
at okhttp3.ResponseBody.string(ResponseBody.kt:186)
Я пытаюсь получить данные из API, но получаю следующую ошибку. Я не могу выяснить, в чем проблема. Я использую отдельный поток пользовательского интерфейса для получения данных, после чего приложение выходит из строя. [code]2020-02-20 17:20:01.088 22802-22802/com.example.flypped E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.flypped, PID: 22802 android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513) at com.android.org.conscrypt.Platform.blockGuardOnNetwork(Platform.java:415) at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:560) at okio.InputStreamSource.read(Okio.kt:102) at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:159) at okio.RealBufferedSource.request(RealBufferedSource.kt:62) at okio.RealBufferedSource.require(RealBufferedSource.kt:55) at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.kt:299) at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.kt:450) at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.kt:429) at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:279) at okio.RealBufferedSource.select(RealBufferedSource.kt:93) at okhttp3.internal.Util.readBomAsCharset(Util.kt:256) at okhttp3.ResponseBody.string(ResponseBody.kt:187) at com.example.flypped.MainActivity$2$1.run(MainActivity.java:110) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7156) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975) Suppressed: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513) at com.android.org.conscrypt.Platform.blockGuardOnNetwork(Platform.java:415) at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:560) at okio.InputStreamSource.read(Okio.kt:102) at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:159) at okio.RealBufferedSource.request(RealBufferedSource.kt:62) at okio.RealBufferedSource.require(RealBufferedSource.kt:55) at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.kt:299) at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.kt:450) at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.kt:429) at okhttp3.internal.Util.skipAll(Util.kt:337) at okhttp3.internal.Util.discard(Util.kt:358) at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.close(Http1ExchangeCodec.kt:471) at okio.ForwardingSource.close(ForwardingSource.kt:34) at okhttp3.internal.connection.Exchange$ResponseBodySource.close(Exchange.kt:306) at okio.RealBufferedSource.close(RealBufferedSource.kt:461) at kotlin.io.CloseableKt.closeFinally(Closeable.kt:56) at okhttp3.ResponseBody.string(ResponseBody.kt:186) [/code] Ниже мой код: XML-код: [code]
[/code] Код Java: [code] private void getMenuData(){
OkHttpClient client = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .writeTimeout(20,TimeUnit.SECONDS) .build();
Request request = new Request.Builder().url(URL).build();
client.newCall(request).enqueue(new Callback() {
@Override public void onResponse(@NotNull Call call, @NotNull final Response response) throws IOException {
runOnUiThread(new Runnable() { @Override public void run() {
try {
JSONArray jsonArray = new JSONArray(response.body().string());