loading

프로그래밍/안드로이드

[Android Studio] java.lang.IllegalArgumentException: @PartMap parameters can only be used with multipart encoding. 에러 해결방법

침착곰 2021. 4. 29. 10:28
반응형

안녕하세요

안드로이드 스튜디오[Android Studio] 개발 도중에 아래와 같은 에러가 뜬 경우 제가 해결했던 해결방법입니다

하루동안 삽질을 했는데 다음 날 아침에 머리를 비우고 와서 금방 해결했던 문제입니다

다음 날에 해결하는데 30분도 안 걸렸어... ㅠㅠ

 

에러 전문

E/Exception: java.lang.IllegalArgumentException: @PartMap parameters can only be used with multipart encoding. (parameter #1)
        for method APIInterface.doGetPhotoUpload
        at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:755)
        at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:746)
        at retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:764)
        at retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:672)
        at retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:339)
        at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:207)
        at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
        at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
        at java.lang.reflect.Proxy.invoke(Proxy.java:813)
        at $Proxy0.doGetPhotoUpload(Unknown Source)
        at com.example.hp.jmsc.fragment.photo.PhotoFragment.SendImage(PhotoFragment.java:267)
        at com.example.hp.jmsc.fragment.photo.PhotoFragment.onActivityResult(PhotoFragment.java:324)
        at android.app.Activity.dispatchActivityResult(Activity.java:6956)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
        at android.app.ActivityThread.-wrap20(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

 


해결 방법

전체 코드를 올릴 수는 없지만 안드로이드 프로젝트에서 갤러리의 사진을 톰캣서버에 전송하는 것을 구현하는 중에 생긴 에러였습니다

하단의 소스에서 @Multipart를 추가하니 에러가 없어졌습니다

이렇게 간단하게 해결하다니... ㅠㅠ

이전 소스

@POST("inout_sjt/APP_IMG_UPLOAD.do")
Call<BaseNetwrok> doGetPhotoUpload(@PartMap() Map<String, RequestBody> partMap,
                                   @Part MultipartBody.Part ImgFile);

 

해결한 소스

@Multipart
@POST("inout_sjt/APP_IMG_UPLOAD.do")
Call<BaseNetwrok> doGetPhotoUpload(@PartMap() Map<String, RequestBody> partMap,
                                   @Part MultipartBody.Part ImgFile);

 

여기까지 @PartMap parameters can only be used with multipart encoding. (parameter #1) 에러를 해결한 방법이었습니다

안드로이드 개발을 하는 개발자들에게 이 글이 도움이 되었으면 좋겠습니다

반응형
그리드형