Android 在安卓系统中使用改型后,图像不会上载到服务器

Android 在安卓系统中使用改型后,图像不会上载到服务器,android,retrofit2,multipart,Android,Retrofit2,Multipart,我正在开发一个应用程序,我需要在服务器上上传图像。我无法使用改型在服务器上上传图像。我不知道在另一个应用程序中使用相同的代码上传图像有什么问题。下面是我的代码 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_GALLERY_CODE && resultCode == Activity.RESULT

我正在开发一个应用程序,我需要在服务器上上传图像。我无法使用改型在服务器上上传图像。我不知道在另一个应用程序中使用相同的代码上传图像有什么问题。下面是我的代码

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == REQUEST_GALLERY_CODE && resultCode == Activity.RESULT_OK){
            uri = data.getData();
            if(EasyPermissions.hasPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
                String filePath = getRealPathFromURIPath(uri, ProfileActivity.this);
                File file = new File(filePath);
                iv_user_profile_image.setImageURI(uri);

                Log.d(TAG, "Filename " + file.getName());

                RequestBody mFile = RequestBody.create(MediaType.parse("image/*"), file);
                MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), mFile);
                RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
                RequestBody uid = RequestBody.create(MediaType.parse("text/plain"), loginStatusModal.getUser_id());

                WebClient uploadImage = ServiceGenerators.createService(WebClient.class);
                Call<UploadObject> fileUpload = uploadImage.uploadFile(mAuthorizationHeader,fileToUpload/*,uid*/);
                String abc = fileUpload.request().url().toString();
                fileUpload.enqueue(new Callback<UploadObject>() {
                    @Override
                    public void onResponse(Call<UploadObject> call, Response<UploadObject> response) {
                        Toast.makeText(ProfileActivity.this, "Response " + response.raw().message(), Toast.LENGTH_LONG).show();
                        Toast.makeText(ProfileActivity.this, "Success " + response.body().getStatus(), Toast.LENGTH_LONG).show();
                    }
                    @Override
                    public void onFailure(Call<UploadObject> call, Throwable t) {
                        Log.d(TAG, "Error " + t.getMessage());
                    }
                });
            }else{
                EasyPermissions.requestPermissions(this, getString(R.string.read_file), READ_REQUEST_CODE, Manifest.permission.READ_EXTERNAL_STORAGE);
            }
        }
    }
这个消息是来的 下面是我的界面

@Multipart
@POST("/api/uploadimage")
Call<UploadObject> uploadFile(@Header("Authorization") String authorizationHeader,
                              @Part MultipartBody.Part file);
@Multipart
@POST(“/api/uploadimage”)
调用uploadFile(@Header(“Authorization”)字符串authorizationHeader,
@Part MultipartBody.Part文件);
请告诉我这个代码到底出了什么问题
欢迎提供任何帮助。

您生成的JSON格式不正确。获取输出并使用服务进行测试,如查看问题所在

您的改装呼叫可能如下所示:

@Multipart
@POST("/api/uploadimage")
Call<UploadObject> uploadFile(@Header("Authorization") String 
authorizationHeader, RequestBody file);


RequestBody typedFile = RequestBody.create(MediaType.parse("image/*"), file);
uploadImage.uploadFile(mAuthorizationHeader, typedFile);
@Multipart
@POST(“/api/uploadimage”)
调用uploadFile(@Header(“Authorization”)字符串
authorizationHeader,RequestBody文件);
RequestBody typedFile=RequestBody.create(MediaType.parse(“image/*”),文件);
uploadImage.uploadFile(mAuthorizationHeader,typedFile);

生成的JSON格式不正确。获取输出并使用服务进行测试,如查看问题所在

您的改装呼叫可能如下所示:

@Multipart
@POST("/api/uploadimage")
Call<UploadObject> uploadFile(@Header("Authorization") String 
authorizationHeader, RequestBody file);


RequestBody typedFile = RequestBody.create(MediaType.parse("image/*"), file);
uploadImage.uploadFile(mAuthorizationHeader, typedFile);
@Multipart
@POST(“/api/uploadimage”)
调用uploadFile(@Header(“Authorization”)字符串
authorizationHeader,RequestBody文件);
RequestBody typedFile=RequestBody.create(MediaType.parse(“image/*”),文件);
uploadImage.uploadFile(mAuthorizationHeader,typedFile);

问题在于Gson需要一个对象,但却收到一个字符串,这是因为JSON的格式可能是错误的。JSON必须以

{
或者,如果您使用的是GSON,您可以设置:

.setLenient()
用于接受格式错误的JSON


编码不错

问题是Gson需要一个对象,但正在接收一个字符串,这是因为JSON的格式可能是错误的。JSON必须以

{
或者,如果您使用的是GSON,您可以设置:

.setLenient()
用于接受格式错误的JSON


编码不错

.setLenient()也被使用,json是有效的,但仍然会出现此错误。请显示使用,您的json响应,我们可以告诉您有关格式的更多信息。{“状态”:“成功”,“代码”:2001,“图像路径”:“}json必须以“,你有一个;单独地这也是一个错误。您可以始终使用此网站验证/检查json响应。setLenient()也被使用,json是有效的,但仍然存在此错误。请显示使用,您的json响应,我们可以告诉您有关格式的更多信息。{“状态”:“成功”,“代码”:2001,“图像路径”:“”}json必须以“,你有一个;单独地这也是一个错误。您可以随时使用此网站验证/检查json响应