Let us suppose you have to create post request params in below mentioned format:
Here I have to send a user object which include the picture parameter ,to achieve  this you have to create HashMap which include RequestBody as parameters and you need Multipartbody object. 
{
    "user": {
        "email": "",
        "password": "",
        "name": "",
        "passcode": "",
        "picture": "",
        "currency_symbol_id": ""
    }
}
 
	- Create ApiInterface : 
	
@Multipart
@POST("/api/user/register")
Call<ResponseBody> createUser(@PartMap() Map<String, RequestBody> requestBodyMap,@Part MultipartBody.Part file);
- Create MultipartBody and request Hashmap which are used in createUser:
	
try {
    MultipartBody.Part imageFileBody=null;
    File fileToUpload=new File(mCurrentPhotoPath);
      RequestBody requestBody = RequestBody.create(MediaType.parse(Constants.CONTENT_IMAGE), fileToUpload);
  imageFileBody = MultipartBody.Part.createFormData(Constants.KEY_PIC, fileToUpload.getName(), requestBody);
        // call api to create new account
     Map<String,RequestBody> requestBodyMap=new HashMap<>();
    requestBodyMap.put(Constants.KEY_EMAIL, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),email));
    requestBodyMap.put(Constants.KEY_PASSWORD, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),password));
    requestBodyMap.put(Constants.KEY_PHONE, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),phoneNo));
    requestBodyMap.put(Constants.KEY_NAME, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),fullname));
    requestBodyMap.put(Constants.KEY_TIME_ZONE, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),Utils.getTimeZone()));
    requestBodyMap.put(Constants.KEY_UDID, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),notificationToken));
    requestBodyMap.put(Constants.KEY_TYPE, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),Constants.DEVICE_TYPE));
    requestBodyMap.put(Constants.KEY_CURRENCY, RequestBody.create(MediaType.parse(Constants.TEXT_PLAIN_TYPE),selectedCurrency.getId().toString()));
    
}catch (Exception e){
}
  // Note  : here  Constants.KEY_EMAIL name refers : "user[email]" 
         
public static final String IMAGE_TYPE="image/*";
public static final String TEXT_PLAIN_TYPE="text/plain";
public static final String CONTENT_IMAGE="image/jpeg";
public static final String FB_PROVIDER="facebook";
public static final String GOOGLE_PROVIDER="google";
public static final String DEVICE_TYPE="ANDROID";
 
 
Thanks ..
Happy coding 
 
                       
                    
0 Comment(s)