2016-08-29 1 views
6

여기에이 질문을 게시하기 전에 인터페이스 메서드 위에 @Multipart을 추가하려고 시도했습니다. 그리고 stackoverflow에서 검색하는 것이 여전히 내 문제와 유사하지 않습니다.@Part 매개 변수는 멀티 파트 인코딩에만 사용할 수 있습니다. (매개 변수 # 8)

이 경우 서버에 TypedFile을 사용하여 이미지를 보내려고합니다. 이 같은 내 인터페이스 방법의 모습 : 우리가 @Part@Body 볼 수있는 방법은

@Headers({"Content-type: application/json"}) 
    @POST("/user/change") 
    void postChange(@Query("name") String name, @Query("email") String email, @Query("password") String password, @Query("phone") String phone, @Query("user_id") String userId, @Query("address[]") String[] listAddress, @Query("head[]") String[] head, @Part("photo_profile") TypedFile photoProfile, @Body TypedInput jsonObject, Callback<ReceiveDTO> callback); 

편집

. 내가 방법 위에 @Multipart를 추가 할 경우, 우리는 내가 을 사용하고 @Body parameters cannot be used with form or multi-part encoding. (parameter #9)

우리는 @query APPEND 매개 변수에서 Get 요청으로 사실 @query를 사용하여 1.9

+0

여기의 예에 따라 제안 - 당신이 문제를 다음 다중 편집 질문을 사용하여 https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server facing –

답변

4

새롭게 개선 오류를 발생합니다 URL의 끝은 Doc 예제를 참조하십시오.

당신은 서버에 사용자 프로파일 정보를 전송해야하는 경우

, 사용 MultiPart

멀티 파트 부품 개조의 컨버터 중 하나를 사용하거나 자신의 직렬화를 처리 할 수 ​​ RequestBody을 구현할 수 있습니다.

예는 다음의 예를 들어 우리는 서버에 약간의 설명과 함께 프로필 사진을 보내 :

@Multipart 
@PUT("user/photo") 
Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description); 

당신은 더 추가 속성도 [추가 @Part]을 추가 할 수 있습니다. 전체 예제 here을 참조하십시오. 단계별로이 작업을 수행하는 방법을 설명합니다.

편집 : JackWarthon이 here을 설명하는 바와 같이, @Body 주석은 단일 요청 본문을 정의합니다.

interface Foo { 
    @POST("/jayson") 
    FooResponse postJson(@Body FooRequest body); 
} 
+0

나는 여전히 @Body 매개 변수를 폼이나 다중 부분 인코딩과 함께 사용할 수 없다는 오류가있다. (매개 변수 # 9)'. 그것은 마지막 매개 변수에'@ Body'가 있기 때문입니다. –

+0

@RBesar 수정 된 답변보기. – Amir

관련 문제