250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 막내의막무가내 안드로이드
- 프래그먼트
- 주엽역 생활맥주
- 막무가내
- 부스트코스에이스
- 막내의막무가내 SQL
- 안드로이드
- 막내의막무가내 프로그래밍
- 막내의막무가내 코틀린 안드로이드
- 막내의 막무가내 알고리즘
- 2022년 6월 일상
- 안드로이드 Sunflower 스터디
- 막내의막무가내 일상
- 막내의막무가내 플러터 flutter
- 부스트코스
- 막내의막무가내 플러터
- 막내의막무가내
- 막내의막무가내 안드로이드 에러 해결
- 주택가 잠실새내
- 막내의막무가내 코틀린
- 프로그래머스 알고리즘
- 막내의 막무가내
- 막내의막무가내 알고리즘
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 목표 및 회고
- Fragment
- 막내의막무가내 rxjava
- flutter network call
- 안드로이드 sunflower
- 막내의막무가내 안드로이드 코틀린
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] 이미지 전송중 Retorift2 관련 에러: Only one encoding annotation allowed 본문
안드로이드/코틀린 & 아키텍처 & Recent
[안드로이드] 이미지 전송중 Retorift2 관련 에러: Only one encoding annotation allowed
막무가내막내 2020. 7. 3. 15:48728x90
[2020-04-13 업데이트]
안드로이드 이미지와 일반 값들을 전송하기 위해 Retrofit2 통신하다가 일어난 에러이다.
이유는 @Multipart , @FormUrlEncoeded, @Body, @Field 는 Retrofit interface 함수에 공존할 수 없습니다.
이거에 대한 말은 아래 링크에서 찾아볼 수 있습니다.
@Multipart 사용시 @Part 로 보내줘야합니다.
나의 예시)
@Multipart
@POST("/predict")
fun getTest(
@Part file: MultipartBody.Part,
@Part("y") x: Float,
@Part("x") y: Float
): Call<ResponseBody>
@Multipart
@POST("/predict")
fun getTest(
@Part file: MultipartBody.Part,
@Part("x") x: ArrayList<Float>,
@Part("y") y: ArrayList<Float>
): Call<ResponseBody>
[서버 Flask 에서는 다음과 같이 받아주었습니다.]
# 파일 업로드
@app.route('/predict', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
print(flask.request.files)
print(flask.request.form)
# 내가 찍은 X, Y 좌표 리스트 (Float 형)
x_list = request.form.getlist('x')
y_list = request.form.getlist('y')
print(x_list)
print(y_list)
# # 처음 그린 좌표 하나만 세팅
x_first = x_list[0]
y_first = y_list[0]
print(x_first)
print(y_first)
# 파일 받기
f = request.files['image']
# 그걸 그대로 적당한 파일명 줘서 저장 (뭔지랄을 해도 파일 저장된걸 볼 수가 없음 어따 저장되는겨 싯벌)
f.save(secure_filename(f.filename))
print(f.filename)
sfname = str(secure_filename(f.filename))
f.save(sfname)
return "성공"
# 실행에서 메인 쓰레드인 경우, 먼저 모델을 불러온 뒤 서버를 시작합니다.
if __name__ == "__main__":
print(("* Loading Keras model and Flask starting server..."
"please wait until server has fully started"))
load_model()
# 0.0.0.0 으로 해야 같은 와이파에 폰에서 접속 가능함
app.run(host='0.0.0.0')
https://stackoverflow.com/questions/45289490/android-retrofit-only-one-encoding-annotation-allowed
댓글과 공감은 큰 힘이 됩니다. 감사합니다!!
728x90
'안드로이드 > 코틀린 & 아키텍처 & Recent' 카테고리의 다른 글
[안드로이드] 안드로이드 Linkfy 적용 (하나의 텍스트에 링크를 여러개 달아주자) (0) | 2020.07.05 |
---|---|
[안드로이드] 기억노트 - Retrofit2 참고 사이트 (0) | 2020.07.03 |
[안드로이드] 안드로이드 달력 라이브러리 (feat. CosmoCalendar) (20) | 2020.07.02 |
[안드로이드] 안드로이드 ViewPager2 적용 (feat. Viewpager number indicator) (2) | 2020.06.30 |
[안드로이드] Jetpack Navigation Fragment 전환시 BottomNavigationView 숨기는 방법 (0) | 2020.06.27 |
Comments