Problem z API z NBP, Android, Kotlin

0

Cześć!
Chcę napisać kalkulator walutowy i mam mały problem.
Korzystając z biblioteki OkHttp3 oraz Fuel nie mogę pobrać JSONa ze strony NBP korzystając z API. Najpierw myślałem że coś robię źle, potem okazało się że problem dotyczy tylko strony NBP. pomyślałem że problemem jest OkHttp3 więc znalazłem na GitHubie bibliotekę Fuel służącą do podobnych celów. Przekopałem się przez dokumentację napisałem próbną funkcję i znowu to samo. Znowu problem tylko z NBP. Miał ktoś może podobny problem i mógł by doradzić jak się go pozbyć?
Z góry dziękuję za odpowiedzi!

A tu moja próbna funkcja

fun getJson() {

    val url = "http://api.nbp.pl/api/exchangerates/rates/a/chf/?format=json"


    Fuel.get(url).response { request, response, result ->
        println(request)
        println(response)
    }


    /*
    val request = Request.Builder().url(url).build()
    val client = OkHttpClient()
    client.newCall(request).enqueue(object: Callback{
        override fun onResponse(call: Call, response: Response) {
            val body = response.body()?.string()
            println(body)
        }

        override fun onFailure(call: Call, e: IOException) {
            println("failure execution")
        }

    })
    */
}
1

Ale co się dzieje? Dostajesz jakieś błędy, zle dane, brak danych?

0
Dregorio napisał(a):

Ale co się dzieje? Dostajesz jakieś błędy, zle dane, brak danych?

w OkHttp3 jest wywoływana metoda onFailure, w Fuel brak danych
jak będę w domu to wyślę screeny z logami

1

SOA1 - wklej sobie w przeglądarkę link http://api.nbp.pl/api/exchangerates/rates/a/chf/?format=json - ja dostaję prawidłową odpowiedź
screenshot-20190816212440.png

BTW przy response dostajesz ByteArray https://github.com/kittinunf/fuel/tree/master/fuel#getting-a-response

2

Która wersja Androida? Jak powyżej 27, to zmień na TLS albo pozwól na clear text dla tej domeny. https://android-developers.googleblog.com/2018/04/protecting-users-with-tls-by-default-in.html

Jak nie działa, to loguj wyjątki a nie nic nieznaczącą wiadomość failure execution.

0
abrakadaber napisał(a):

SOA1 - wklej sobie w przeglądarkę link http://api.nbp.pl/api/exchangerates/rates/a/chf/?format=json - ja dostaję prawidłową odpowiedź
screenshot-20190816212440.png

BTW przy response dostajesz ByteArray https://github.com/kittinunf/fuel/tree/master/fuel#getting-a-response

nie raz wklejałem i wiem że NBP powinno odpowiedzieć prawidłowo
w załączniku zamieszczam logi ze zwracaną zawartością od NBP i przykładowej strony

0
Michał Sikora napisał(a):

Która wersja Androida? Jak powyżej 27, to zmień na TLS albo pozwól na clear text dla tej domeny. https://android-developers.googleblog.com/2018/04/protecting-users-with-tls-by-default-in.html

Jak nie działa, to loguj wyjątki a nie nic nieznaczącą wiadomość failure execution.

wersja 28, próbowałem teraz coś podziałać z TLS, narazi bez efektu, przekopię się przez to co mi podesłałeś dokładniej w niedzielę. Do do logowania to jest tylko funkcja testowa, chcę w niej wiedzieć co się dzieje, już to wcześniej debugowałem i sprawdzałem wątki, nawet wywoływałem w osobnym wątku tworzonym przeze mnie. Zawsze z tym samym efektem.

1

Ale co tu kombinować? Zmieniasz http na https i tyle.

I może Ty widziałeś wyjątek, ale my nie. To byłaby dosyć przydatna informacja, jeśli mamy jakoś z tym pomóc.

0
Michał Sikora napisał(a):

Ale co tu kombinować? Zmieniasz http na https i tyle.

I może Ty widziałeś wyjątek, ale my nie. To byłaby dosyć przydatna informacja, jeśli mamy jakoś z tym pomóc.

Kurde ale ze mnie dzban, faktycznie wystarczyło zmienić http na https i można by nie zmarnować całego dnia. Dzięki wielkie za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1