[将android连接到django时出现400错误请求

问题描述 投票:1回答:1

我正在尝试将点击后的图片从android上传到Django API,但是当我尝试使用日志记录拦截器进行调试时,收到了400错误请求。我已经浏览了所有类似的帖子,但没有帮助。

当我尝试从本地驱动器上载图像时,我的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");
            }
        });


    }

Android端的Django API接口

public interface DjangoApi {

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

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

}
android django django-rest-framework retrofit2 bad-request
1个回答
0
投票

您的图片文件不是文件1_检查文件是否存在于Android存储设备中2_检查您在Android设备中的存储权限3_检查从存储加载图像的位置并粘贴到此处

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.