когда я подключаю django API к моему приложению в android студии, это показывает ошибку - PullRequest
0 голосов
/ 29 января 2020

У меня установлена ​​версия Django на моем ноутбуке, и я хотел бы подключить API к своему приложению android.

Я также создал виртуальную среду.

Я не могу подключиться к своему Django API, поэтому, пожалуйста, помогите мне с подключением к API. Заранее спасибо.

Я просмотрел inte rnet, но не смог получить никакого вывода. Я впервые публикую здесь вопросы извините за любые ошибки.

Я хочу для подключения Django API к моему проекту. Я хочу, чтобы информация отображалась в форме json в мобильном приложении.

Image file

при подключении моего Django API приложение, созданное в android studio, показывает ошибку, я вложил файл выше.

Я прикрепляю свой android файл.

Я использовал модифицированную библиотеку. И я хочу подключить API к моему приложению.

MainActivity. java

ListView listView;
GridView gridView;
public String cap;
public String cap1;
String[] pid;
String[] ptitle;
String[] pdes;
String[] dt;
String[] lk;
TextView name,descrip;

int capnum;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Retrofit retrofit = new Retrofit.Builder().baseUrl(djangoApi.BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
    djangoApi api = retrofit.create(djangoApi.class);
    name= findViewById(R.id.text);
    descrip=findViewById(R.id.image);
    Call<List<PostTable>> call = api.gettabledata();

    call.enqueue(new Callback<List<PostTable>>() {
        @Override
        public void onResponse(Call<List<PostTable>> call, Response<List<PostTable>> response) {
            List<PostTable> pt = response.body();
            assert pt != null;
            String[] pid = new String[pt.size()];
            String[] ptitle = new String[pt.size()];
            String[] pdes = new String[pt.size()];
            String[] pdt = new String[pt.size()];
            String[] plk = new String[pt.size()];
            for (int i = 0; i < pt.size(); i++) {
                pid[i] = pt.get(i).getid();
                ptitle[i] = pt.get(i).gettitle();
                pdes[i] = pt.get(i).getdescription();
                pdt[i] = pt.get(i).getdatetime();
                plk[i] = pt.get(i).getlikes();

            }
            for (int i = 0; i < pt.size(); i++) {
                if (ptitle[i].equalsIgnoreCase("drhsrh")) {
                    capnum = i;
                    cap = pdes[capnum];
                    cap1=ptitle[capnum];

                }
            }
            name.setText(cap1);
            descrip.setText(cap);
            //Glide.with(getApplicationContext()).load(cap).into(imageView);
            //name.setText(cap1);
}
        @Override
        public void onFailure(Call<List<PostTable>> call, Throwable t) {
            Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}
}

это код для класса интерфейса

interface djangoApi {
    String BASE_URL="http://127.0.0.1:8000/";
    @GET("post_table/?format=json")
    Call<List<PostTable>> gettabledata();

1 Ответ

0 голосов
/ 30 января 2020

Начиная с Android 9 (уровень API 28), поддержка открытого текста по умолчанию отключена.

Пожалуйста, проверьте эту документацию.

https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted

Если вы хотите выполнить локальное тестирование, добавьте это android: usingCleartextTraffic = "true" в теге приложения AndroidManifest. xml.

<application
    android:name=".App"
    android:allowBackup="false"
    android:fullBackupContent="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:usesCleartextTraffic="true">
...