Połączenie się bazą danych w kotlinie

0

Witam, jak próbuje uzyskać response z api json-placeholder to nie ma żadengo problemu. Jeśli wpisuje lokalne api, nagle response wygląda tak:

2020-06-23 13:19:10.239 20231-20231/com.example.gym_app D/Requests: [Failure: Connection refused
    	com.github.kittinunf.fuel.core.FuelError$Companion.wrap(FuelError.kt:84)
    	com.github.kittinunf.fuel.core.FuelError$Companion.wrap$default(FuelError.kt:83)
    	com.github.kittinunf.fuel.core.requests.RequestTaskCallbacks.call(RequestTaskCallbacks.kt:30)
    	com.github.kittinunf.fuel.core.requests.RequestTaskCallbacks.call(RequestTaskCallbacks.kt:20)
    	java.util.concurrent.FutureTask.run(FutureTask.java:237)
    	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    	java.lang.Thread.run(Thread.java:761)
    Caused by: Connection refused
    	com.github.kittinunf.fuel.core.FuelError$Companion.wrap(FuelError.kt:86)
    	com.github.kittinunf.fuel.toolbox.HttpClient.executeRequest(HttpClient.kt:39)
    Caused by: java.net.ConnectException: Connection refused
    	java.net.PlainSocketImpl.socketConnect(Native Method)
    	java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
    	java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
    	java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    	java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
    	java.net.Socket.connect(Socket.java:586)
    	com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
    	com.android.okhttp.Connection.connectSocket(Connection.java:196)
    	com.android.okhttp.Connection.connect(Connection.java:172)
    	com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
    	com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
    	com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329)
    	com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
    	com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
    	com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
    	com.github.kittinunf.fuel.toolbox.HttpClient.sendRequest(HttpClient.kt:135)
    	com.github.kittinunf.fuel.toolbox.HttpClient.doRequest(HttpClient.kt:78)
    	com.github.kittinunf.fuel.toolbox.HttpClient.executeRequest(HttpClient.kt:36)
    	com.github.kittinunf.fuel.core.requests.RequestTask.executeRequest(RequestTask.kt:23)
    	com.github.kittinunf.fuel.core.requests.RequestTask.call(RequestTask.kt:44)
    	com.github.kittinunf.fuel.core.requests.RequestTask.call(RequestTask.kt:14)
    	com.github.kittinunf.fuel.core.requests.RequestTaskCallbacks.call(RequestTaskCallbacks.kt:28)
    	com.github.kittinunf.fuel.core.requests.RequestTaskCallbacks.call(RequestTaskCallbacks.kt:20)
    	java.util.concurrent.FutureTask.run(FutureTask.java:237)
    	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    	java.lang.Thread.run(Thread.java:761)
    
    ]

Dodam, że API w postmanie działa tak samo jak to z jsonplaceholder. Czy tu jest problem, że nie dodałem czegoś w manifests albo gradle ? API jest zrobione w node.js, baza danych w MYSQL.

1
  1. Masz uprawnienia Internet?
  2. Co to znaczy lokalne api?
0
  1. Tak mam uprawnienia w manifescie, bo normalnie otrzymuje odpowiedz od API https://jsonplaceholder.typicode.com/todos.
  2. Lokalne api, hmm zle się wyraziłem może. Chodzi mi o to ze postawilem sobie server w node.js i połączyłem się z bazą danych no i nigdzie tego nie wrzucalem tylko na localhoscie to stawiam.

No i za bardzo nie wiem gdzie jest błąd, bo każde api działa tylko nie to z mojego servera, a przecież wszystko działa jesli sprawdzam na postmanie.

1

A czy telefon/emulator widzi w ogóle ten serwer? Jak odpalisz adres serwera w przeglądarce na telefonie to uzyskujesz połączenie?

0

No sprawdziłem teraz, nie znajduje tej strony wgl, więc co mogę zrobić ? Czy to znaczy ze nie mozna pracować na lokalnym serverze i muszę to gdzieś wrzucić ?

4

Podobno Retrofit pobiera dane lepiej, gdy adres api jest osiągalny. Mam pomysł, co możesz zrobić - wystaw api tak, żeby było dostępne dla klienta. Wydaje mi się, że bez tego się nie obejdzie, przykro mi.

0

Dzięki bardzo za pomoc

0

Pracujesz na telefonie czy emulatorze?

0

Obecnie na emulatorze, ale już rozwiązałem problem. Wystarczyło skorzystać z tego rozwiązania .

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