Android OpenAPI generator client can not connect to Django Rest API made with rest framework

I just generated a android client for an schema of a API built by myself and enabled internet connection permission with:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

I copied the code, changed the package name and URLS for api, so that in my client.api.PhotosApi class for example I have:

public class PhotosApi {
  String basePath = "http://10.0.2.2:8000";
  ApiInvoker apiInvoker = ApiInvoker.getInstance();

  public void addHeader(String key, String value) {
    getInvoker().addDefaultHeader(key, value);
  }

And all the code is autgenerated by https://openapi-generator.tech/. This IP and port corresponds to the IP of my local computer because the code is running on an android emulator. Well, when I use the API to retrieve photos for example, I get:

2025-04-22 11:26:50.039 20890-20890 AndroidRuntime  es.example.rallyfotografico  E  FATAL EXCEPTION: main
Process: es.example.rallyfotografico, PID: 20890
java.lang.IllegalStateException: Could not execute method for android:onClick
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:472)
    at android.view.View.performClick(View.java:7448)
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218)
    at android.view.View.performClickInternal(View.java:7425)
    at android.view.View.access$3600(View.java:810)
    at android.view.View$PerformClick.run(View.java:28305)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:467)
    at android.view.View.performClick(View.java:7448) 
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218) 
    at android.view.View.performClickInternal(View.java:7425) 
    at android.view.View.access$3600(View.java:810) 
    at android.view.View$PerformClick.run(View.java:28305) 
    at android.os.Handler.handleCallback(Handler.java:938) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
Caused by: java.lang.RuntimeException: java.util.concurrent.TimeoutException
    at es.example.rallyfotografico.LaunchActivity.test(LaunchActivity.java:66)
    at java.lang.reflect.Method.invoke(Native Method) 
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:467) 
    at android.view.View.performClick(View.java:7448) 
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218) 
    at android.view.View.performClickInternal(View.java:7425) 
    at android.view.View.access$3600(View.java:810) 
    at android.view.View$PerformClick.run(View.java:28305) 
    at android.os.Handler.handleCallback(Handler.java:938) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
Caused by: java.util.concurrent.TimeoutException
    at com.android.volley.toolbox.RequestFuture.doGet(RequestFuture.java:128)
    at com.android.volley.toolbox.RequestFuture.get(RequestFuture.java:97)
    at client.ApiInvoker.invokeAPI(ApiInvoker.java:372)
    at client.api.PhotosApi.photosList(PhotosApi.java:347)
    at es.example.rallyfotografico.LaunchActivity.test(LaunchActivity.java:53)
    at java.lang.reflect.Method.invoke(Native Method) 
    at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:467) 
    at android.view.View.performClick(View.java:7448) 
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1218) 
    at android.view.View.performClickInternal(View.java:7425) 
    at android.view.View.access$3600(View.java:810) 
    at android.view.View$PerformClick.run(View.java:28305) 
    at android.os.Handler.handleCallback(Handler.java:938) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

When I click a button that only should test the API retrieving a JSON. I tried with localhost, I tried with 10.0.2.2 (and port 80 obviously). I tried to connect to an API of pokemon to test if it has Internet connection. Django is configured to run a server on 0.0.0.0:8000 and allow host "*", so I do not know why I get this ConnectionTimeOut. I tried to put 30s of timeout but I still got it. The strangest fact is that in the browser of the mobile, I can access the API.

Вернуться на верх