일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Android
- 안드로이드를 위한
- Same parameter
- 안드로이드
- 인코딩방지
- Refresh Tocken
- permission_handler
- SOLID 원칙
- 토큰갱신
- 2D 그래픽 라이브러리
- 8시간 삽질
- dart
- TDD 개발 방법론
- 에러 메시지를 잘보자 ^^
- Flutter
- widget test
- 테스트 주도 개발론
- 배움순서
- pubspec.yaml
- 객체 지향 설계
- 다트 테스트
- 플러터 테스트
- Parameter specified as non-null is null
- retorift
- 플러터
- 다트
- 2D graphics library
- refresh 토큰
- pubspec
- dart test
Archives
- Today
- Total
Landroid
Postman에서 같은 이름의 파라미터를 Retrofit에서 구현하는 방법 본문
자~ 인사는 생략하고 제가 상황을 한 번 가정하겠습니다.
여러분은 안드로이드 앱 개발자입니다.
개발을 하기 전에 백엔드 개발자가 만든 명세서를 보다가 이상한 점을 발견합니다.
바로 백엔드 개발자한테 말하자 되돌아온 말은
???: 응, 저렇게 데이터 여러 개 넣어서 보내줘 ~ ^^
???????????
이 말을 들었을 때 처음 든 생각은
"아니 이걸 어케 구현해 (-_-;;)"
하. 지. 만
오랜 시간 삽질한 끝에 드디어 해결책을 찾았습니다!
우선 코드부터 보시죠.
@Multipart
@GET("/")
fun getWhat(@PartMap partMap: HashMap<String, RequestBody>): Call<Void>
평범하게 해쉬맵으로 보냅니다. 그럼 해쉬맵에 데이터를 어떻게 넣어야 할까요?
var requestHashMap: HashMap<String, RequestBody> = HashMap()
requestHashMap["data[0]"] = data[0].toRequestBody("multipart/form-data".toMediaTypeOrNull())
requestHashMap["data[1]"] = data[1].toRequestBody("multipart/form-data".toMediaTypeOrNull())
네, 코드를 보시면 해쉬맵에 data[0], data[1] 이런 식으로 키값을 배열처럼 지정하고 값을 넣습니다.
포스트 맨으로 봤을 때 안될 것 같지만 놀랍게도 됩니다!
만약 넣어야 할 데이터가 여러 개일 경우 일일이 지정하는 것은 힘드니 아래 코드처럼 편하게 할당하면 됩니다.
for (i in data.indices) {
requestHashMap["hashtags[$i]"] = data[i].toRequestBody("multipart/form-data".toMediaTypeOrNull())
}
이것으로 도움이 되셨길 바라며 다음에 봅시다!
'안드로이드' 카테고리의 다른 글
[Android] Interceptor로 토큰 갱신하기 (0) | 2021.04.14 |
---|---|
SearchView, 속성 사용법 (2) | 2020.10.31 |
Parameter specified as non-null is null 해결 (0) | 2020.10.24 |
TextView 안에 #붙은 단어에만 스팬 적용하기 (0) | 2020.10.17 |
Retrofit 응답 상태 관리 (0) | 2020.10.10 |
Comments