Android 是否可以使用改装将单个项目作为多部分传递? @Multipart @POST(“/api/add deal/”) public void addDeal(@Body-Deal-Deal,@Part(“image”)类型文件映像,回调);

Android 是否可以使用改装将单个项目作为多部分传递? @Multipart @POST(“/api/add deal/”) public void addDeal(@Body-Deal-Deal,@Part(“image”)类型文件映像,回调);,android,retrofit,multipart,Android,Retrofit,Multipart,我只想将图像作为多部分发送,其余部分按原样发送。有没有可能的方法?即使我试图在我的交易模型中添加TypedFile,但无法使用@part进行注释,似乎您可以将@Body作为TypedString发送。 例如,将“@Body Deal”转换为JSON字符串,并将其作为TypedString发送 详情: @Multipart @POST(“/api/v1/articles/”) 可观察的上载文件(@Part(“author”)类型字符串authorString, @零件(“照片”)类型文件照片文件)

我只想将图像作为多部分发送,其余部分按原样发送。有没有可能的方法?即使我试图在我的交易模型中添加TypedFile,但无法使用@part进行注释,似乎您可以将@Body作为TypedString发送。
例如,将“@Body Deal”转换为JSON字符串,并将其作为TypedString发送

详情:

@Multipart
@POST(“/api/v1/articles/”)
可观察的上载文件(@Part(“author”)类型字符串authorString,
@零件(“照片”)类型文件照片文件);

是的,可以使用哈希映射进行Partmap注释。比如说-

@Multipart
@POST("/api/v1/articles/")
Observable<Response> uploadFile(@Part("author") TypedString authorString,
                                @Part("photo") TypedFile photoFile);
将参数添加到hashmap-

    public static RequestBody ImageToRequestBody(File file) { //for image file to request body
           return RequestBody.create(MediaType.parse("image/*"),file);
    }

    public static RequestBody StringToRequestBody(String string){ // for string to request body
           return RequestBody.create(MediaType.parse("text/plain"),string);
    }
希望这对我有帮助。

这对我很有用:

公共接口{
@多部分
@POST(“/api/Accounts/editaccount”)
调用editUser(@Header(“Authorization”)字符串Authorization、@Part(“file\”;filename=\“pp.png\”)RequestBody文件、@Part(“FirstName”)RequestBody fname、@Part(“Id”)RequestBody Id);
}
File File=新文件(imageUri.getPath());
RequestBody fbody=RequestBody.create(MediaType.parse(“image/*”),文件);
RequestBody name=RequestBody.create(MediaType.parse(“text/plain”)、firstNameField.getText().toString();
RequestBody id=RequestBody.create(MediaType.parse(“text/plain”)、AZUtils.getUserId(this));
Call Call=client.editUser(AZUtils.getToken(this),fbody,name,id);
call.enqueue(新回调(){
@凌驾
公共响应(改装。响应,改装){
printObject(response.body());
}
@凌驾
失效时的公共无效(可丢弃的t){
t、 printStackTrace();
}
});

谢谢。让我试试。我不明白!:/你试了什么?请求正文中是否有任何问题?无法使用改装2.0。使用1+
    @Multipart
    @POST("/api/add-deal/")
    Call<Response> addDeal(@PartMap 
    HashMap<String, RequestBody> hashMap);
    public static RequestBody ImageToRequestBody(File file) { //for image file to request body
           return RequestBody.create(MediaType.parse("image/*"),file);
    }

    public static RequestBody StringToRequestBody(String string){ // for string to request body
           return RequestBody.create(MediaType.parse("text/plain"),string);
    }
    hashMap.put("photo",ImageToRequestBody(imageFile)); //your imageFile to Request body.
    hashMap.put("user_id",StringToRequestBody("113"));
    //calling addDeal method
    apiInterface.addDeal(hashMap);
public interface ApiInterface {

    @Multipart
    @POST("/api/Accounts/editaccount")
    Call<User> editUser (@Header("Authorization") String authorization, @Part("file\"; filename=\"pp.png\" ") RequestBody file , @Part("FirstName") RequestBody fname, @Part("Id") RequestBody id);
    }

    File file = new File(imageUri.getPath());
    RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
    RequestBody name = RequestBody.create(MediaType.parse("text/plain"), firstNameField.getText().toString());
    RequestBody id = RequestBody.create(MediaType.parse("text/plain"), AZUtils.getUserId(this));
    Call<User> call = client.editUser(AZUtils.getToken(this), fbody, name, id);

    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(retrofit.Response<User> response, Retrofit retrofit) {
            AZUtils.printObject(response.body());
        }

        @Override
        public void onFailure(Throwable t) {
            t.printStackTrace();
        }
});