2017-11-21 15 views
1

다음 API는 사용자 프로필 편집을 호출했습니다. 사용자 프로필 사진을 보내야 API에서 여러 부분을 사용했습니다.멀티 파트의 @Part는 문자열 매개 변수를 큰 따옴표로 보냅니다.

@Multipart 
@POST(ApiURLs.EDIT_USER_PROFILE) 
Call<EditProfileModel> EditUserProfile (@Part("user_id) String userId , 
@Part("user_name") String userName , 
@Part("language_id") String languageId , 
@Part("state_id") String stateId , 
@Part MultipartBody.Part 
profilePicture); 

서비스는 요청 매개 변수

"USER_ID"처럼 될 것이라고 때 ":"23 "," "_ 이름": ""Keval Shukla "" "LANGUAGE_ID" ""27 "을" ? "STATE_ID"내가 큰 따옴표 대신 문자열의 다중

답변

0

사용 RequestBody를 사용하는 것을 제거 어떻게 "53", "

.
@Part("user_id") RequestBody user_id, 

String userId= "123456"; 
RequestBody id = 
     RequestBody.create(
       okhttp3.MultipartBody.FORM, userId); 
0

당신은 RequestBody로 파일 이외의 다른 매개 변수를 보낼 수 있습니다 호출합니다. 당신은 당신이 각 요청 매개 변수의 신체 유형을 지정해야합니다 체형으로 다중을 사용하는 경우,

RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), userName); // Here userName is String 
0

당신은 그것에게 길을 잘못하고있다 :

@Multipart 
@POST(ApiURLs.EDIT_USER_PROFILE) 
Call<EditProfileModel> EditUserProfile (@Part("user_id) RequestBody userId , 
@Part("user_name") RequestBody userName , 
@Part("language_id") RequestBody languageId , 
@Part("state_id") RequestBody stateId , 
@Part MultipartBody.Part profilePicture); 

StringRequestBody로 변환합니다.

예를 들어 파일 (이미지, 비디오 등) 및 문자열 매개 변수를 보내고 있습니다. 따라서 모든 매개 변수를 지정하고 특정 매개 변수 유형으로 변환해야합니다. 당신은 두 부분으로 매개 변수를 분할해야

,

1) MultipartBody - 미디어 파일

2) RequestBody - 다른 문자열이나 다른 데이터 형식 매개 변수의

예를 들어,

/*Create API Method*/ 
@Multipart 
@POST("apiurl") 
Call<Object> callMethodName(@Part("mobile_no") RequestBody mobile_no, /*String param */ 
          @Part("password") RequestBody password, /*String param */ 
          @Part MultipartBody.Part profile_img /*file param */); 

내가

public static final String MULTIPART_TYPE = "multipart/form-data"; 

지금 아래와 같이 요청 매개 변수를 작성, 당신은 당신의 요구 사항에 따라로 정의 할 수 있습니다, multipart/form-data로 구문 분석 유형을 정의해야, /* 추가 ​​문자열에 Params */ RequestBody reqNumber = RequestBody.create (MediaType.parse (Constants.MULTIPART_TYPE), number.toString()); RequestBody reqPass = RequestBody.create (MediaType.parse (Constants.MULTIPART_TYPE), pass.toString());

/* Adding File*/ 
File file = new File(selectedImagePath); 
      RequestBody requestFile = RequestBody.create(MediaType.parse(Constants.MULTIPART_TYPE), file); 
      bodyFile = MultipartBody.Part.createFormData("profile_img", file.getName(), requestFile); 

으로 마지막 단계는, 당신은 다음과 같이 API 호출 방법에 요청 매개 변수를 전달해야하는, 그래서 매개 변수를 확인하고 서버로 보낼 수 있습니다.

/* Call API Method */ 
RestClient.getApiClient().callMethodName(reqNumber, reqPass, bodyFile); 
1

이 같이 있어야합니다 - requestBody을 만들

@Multipart 
@POST(ApiURLs.EDIT_USER_PROFILE) 
Call<EditProfileModel> EditUserProfile (
           @Part("user_id") RequestBody userId , 
           @Part("user_name") RequestBody userName , 
           @Part("language_id") RequestBody languageId , 
           @Part("state_id") RequestBody stateId , 
           @Part RequestBody profilePicture); 

그리고

File file = new File(imageURI.getPath()); 
RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file); // File requestBody 
RequestBody userName = RequestBody.create(MediaType.parse("text/plain"), userNameSTRING); // String requestBody