Wpis z mikrobloga

Mordeczki, zrobiłem moduł odpowiadający za wysłanie zapytania oraz pobrania zawartości z body, ale za każdym razem jest IOException Error (wyskakuje Toast "Exception Error!!!").
Dodam, że jestem początkujący w programowaniu na Androida w Android Studio.
Gdyby ktoś mógł pomóc/podpowiedzieć w czym błąd byłbym mega wdzięczny :)

#java #androiddev #androidstudio #kotlin
MisiekD - Mordeczki, zrobiłem moduł odpowiadający za wysłanie zapytania oraz pobrania...

źródło: comment_1586736591TrnULkF3IwZ6wt91bfbGEp.jpg

Pobierz
  • 27
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MisiekD: po Response response zrób sobie sprawdzenie status code jaki przyszedł z posta
coś w stylu:
if (responses.code() == 200)

to bedziesz wiedział co się dzieje
  • Odpowiedz
@push3k-pro: @abuson: o tym myślałem, ale jestem początkujący i nie umiem jeszcze tak dobrze bawić się w logi :)

Natomiast skorzystałem z kolegi error.getMessage() i otrzymałem:

D/NetworkSecurityConfig: No Network Security Config specified, using platform default
Co to może oznaczać, jak załatwić sprawę?
  • Odpowiedz
ten adres to co to jest? jakiś lokalny serwer?


@Karatte: Tak, node.js. Samo wejście w link powinno dać mi log w konsoli, natomiast on nawet pod ten adres nie wchodzi. W Chrome zadziała, w apce nic.
  • Odpowiedz
@MisiekD: Debugowanie na Toastach to głupi pomysł, Zrób Log.e(), mozesz tam podać Throwable i ładnie wypisze exception. Ten request robisz na osobnym wątku? Na głównym nie można. Masz odpowiedni permission w manifeście?
  • Odpowiedz
@gentooman: mam jeden permission do INTERNET w Manifeście jak na razie. Natomiast request jest na razie na jednym wątku. Właśnie coś czuję, że będę musiał to dać na inny, natomiast chciałbym najpierw, żebym otrzymał jakąś odpowiedź z body. Wtedy zacznę robić dalej. Jak na razie utknąłem niestety tylko na działaniu na linkach :/

Z Log.e() już spróbuję.
Mam użyć Log.e(error)? Nie korzystałem nigdy z tego jeszcze :|
  • Odpowiedz
@gentooman: Dałem Log.e.
Wynik dość długi, ale osobiście niewiele rozumiem jeszcze z tego. Chyba mi trochę zajmie wczytanie się w logi Javy ;)

2020-04-13 02:35:08.886 12539-12539/com.example.myapplication07042020 E/TAG: Error:
java.net.SocketException: socket failed: EPERM (Operation not permitted)
  • Odpowiedz
Błąd przy złym wątku jest inny. Testujesz na emulatorze? Na stacku piszą ze pomogło dodanie permission i usunięcie i reinstalacja apki.


@gentooman: Tak, na emulatorze. Już sprawdzę, uno sec.
  • Odpowiedz
@gentooman: sprawdziłem, dodałem dodatkowy PERMISSION, usunąłem apki.
Teraz po chwili logowania od razu wywala i jest crash.

`2020-04-13 02:44:55.044 13412-13412/com.example.myapplication07042020 D/NetworkSecurityConfig: Using Network Security Config from resource networksecurityconfig debugBuild: true
2020-04-13 02:44:55.104 13412-13412/com.example.myapplication07042020 D/AndroidRuntime: Shutting down VM
2020-04-13 02:44:55.108 13412-13412/com.example.myapplication07042020
  • Odpowiedz
@MisiekD: android.os.NetworkOnMainThreadException. Teraz to na pewno. Zrób to co ci podlinkowałem wcześniej z enqueue(...). Nie wymaga to dużych zmian, ale pamiętaj ze aktualizacja UI znowu musi być na głównym wątku, jest to też opisane w tym poradniku.
  • Odpowiedz
@gentooman: Kurcze, rzeczywiście jest napisane jak byk przez co... A aktualizacja UI? Ja to działam tak, że tego geta używam jako jakby funkcję, która zwraca content strony. Nie wiem jak to inaczej opisać. Ogólnie niezbyt dobrze orientuję się jeszcze w Javie. Z tymi wątkami to raczej będzie zabawa, bo robiłem to dosłownie raz.
  • Odpowiedz
@MisiekD: No to możesz mieć problem z tym jak zaprojektowałeś sobie architekturę aplikacji. Aktualizacja UI to np wrzucenie zawartości która pobrałeś do pola tekstowego. Twój problem jest taki ze nie bardzo masz jak zwrócić ten wynik na główny wątek, wiec aktualizacja UI musi być w callbacku który przekazałeś do enqueue. Inne rozwiązanie to przekazanie lambdy do funkcji sendLink w której aktualizujesz UI. Coś w stylu tego jak działa np setOnClickListener
  • Odpowiedz