400 неверных запросов при подключении android к django - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь загрузить картинку с кликом из android в Django API, но я получаю 400 Bad Request, когда я пытался отладить с перехватчиком регистрации. Я просмотрел все подобные посты, но ни одна из них не помогла.

Мой Django API работает нормально, когда я пытаюсь загрузить изображение с локального диска, проблема заключается только в том, что я пытался отправить изображение из android в бэкенд. Было бы очень хорошо, если бы кто-нибудь мог мне помочь.

Вот так выглядит мой перехватчик логинга https://i.stack.imgur.com/zoB40.png

Так выглядит мой Django API : https://i.stack.imgur.com/c1ueV.png

Django Views.py

from rest_framework.generics import (CreateAPIView)
from image_app.models import MyImage
from django.http import HttpResponse
from rest_framework.response import Response
from rest_framework import viewsets


class ImageCreateAPIView(CreateAPIView):
    queryset = MyImage.objects.all()
    serializer_class = imageSerializer

Метод в основной деятельности

        public void uploadPicture(File imageFile, Uri uri ){
        System.out.println("The imagefile is stored in "+imageFile);
        OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        clientBuilder.addInterceptor(loggingInterceptor);
        /*Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(DjangoApi.DJANGO_SITE)
                .client(clientBuilder.build())

                .addConverterFactory(GsonConverterFactory.create())
                .build();
*/
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(DjangoApi.DJANGO_SITE)
                .client(clientBuilder.build())
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Log.d("Django post API", retrofit+"");


        DjangoApi postApi= retrofit.create(DjangoApi.class);


        RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), imageFile);
        MultipartBody.Part multiPartBody = MultipartBody.Part
                .createFormData("model_pic", imageFile.getName(), requestBody);



        Call<RequestBody> call = postApi.uploadFile(multiPartBody);

        call.enqueue(new Callback<RequestBody>() {
            @Override
            public void onResponse(Call<RequestBody> call, Response<RequestBody> response) {
                Log.d("good", "good");

            }
            @Override
            public void onFailure(Call<RequestBody> call, Throwable t) {
                Log.d("fail", "fail");
            }
        });


    }

Интерфейс Django API в android конец

public interface DjangoApi {

    String DJANGO_SITE = "http://192.168.0.102:8000/image/";

    @Multipart
    @POST("upload/")
    Call<RequestBody>  uploadFile(@Part MultipartBody.Part file);

}

1 Ответ

0 голосов
/ 02 мая 2020

Ваш файл изображения, а не файл 1_, файл проверки существует в android хранилище 2_проверьте свое разрешение на хранение в android устройство 3_ проверьте место загрузки изображения из хранилища и вставьте сюда

...