Retrofit Multipart with Body

Viewed 1135

This is how the body for the call should look like (image field will be added).

{
"email":"test", "username":"test", "password":"test", "name":"test", "description":"Something...", "OAuthCredentialsTest":{
"client_id":23, "client_secret":"test" } }

I am using @PartMap as the body in my call:

Call<CreateUserResult> createUserPart(@PartMap Map<String, RequestBody> map);

And then when I enqueue the call:

File file = new File(signUpUser.getImagePath());
    RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), file);
    RequestBody fullName = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getFullName());
    RequestBody email = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getEmail());
    RequestBody username = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getUsername());
    RequestBody password = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getPassword());
    RequestBody desc = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getDescription());

    Map<String, RequestBody> myMap = new HashMap<>();
    myMap.put("file\"; filename=\"" + file.getName(), fileBody);
    myMap.put("name", fullName);
    myMap.put("email", email);
    myMap.put("username", username);
    myMap.put("password", password);
    myMap.put("description", desc);

But, how can I include the OAuthCredentialsTest key and values part in my myMap?

0 Answers
Related