我可以从Django后端的管理面板中手动上传图片,但无法从Android端进行连接。
我看过多种解决方案,也尝试在Django API中使用String DJANGO_SITE =“ https://10.0.2.2:8000/image/”] >>,但每次都无法连接。为了运行Django后端,我输入了[[python3 manage.py runserver 192.168.20.106:8080。在这里,192.168.20.106是我路由器的IP地址。我得到的确切错误是 java.net.ConnectException:无法连接到/192.168.20.106:8000
private void uploadFoto(Bitmap bmp) {
File imageFile = savebitmap(bmp); // converts bitmap to file
Log.e("The file to be send is",imageFile+"");
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(DjangoApi.DJANGO_SITE)
.addConverterFactory(GsonConverterFactory.create())
.build();
Log.e("Django post API", retrofit+"");
DjangoApi postApi= retrofit.create(DjangoApi.class);
Log.e("Django post API", postApi+"");
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/data"), imageFile);
MultipartBody.Part multiPartBody = MultipartBody.Part
.createFormData("model_pic", imageFile.getName(), requestBody);
Call<RequestBody> call = postApi.uploadFile(multiPartBody);
Log.e("The call is ",call+"");
call.enqueue(new Callback<RequestBody>() {
@Override
public void onResponse(Call<RequestBody> call, Response<RequestBody> response) {
Log.e("response", response+"");
Log.d("good", "good");
}
@Override
public void onFailure(Call<RequestBody> call, Throwable t) {
Log.e("response", t+"");
Log.d("fail", "fail");
}
});
}
}
这是我的Django API部分的代码:
public interface DjangoApi {
String DJANGO_SITE = "https://192.168.20.106:8000/image/";
@Multipart
@POST("upload/")
Call<RequestBody> uploadFile(@Part MultipartBody.Part file);
}
有人可以在这方面帮助我吗?
我可以从Django后端的管理面板中手动上传图片,但无法从Android端进行连接。我已经看到了多种解决方案,并且还尝试了String DJANGO_SITE =“ https://10.0 ....
python3 manage.py runserver 192.168.20.106:8080
来运行使用Django开发的后端。我认为这个问题与Android无关,可能是IPV6问题或防火墙问题。检查是否正在运行防火墙,如果关闭,则将其关闭。如果它与IPv6关联,请运行以下命令,它应该可以工作: