inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 안드로이드 - 코틀린과 Jetpack 활용

Retrofit 사용법 소개, 서비스 인터페이스 작성

서비스 인터페이스 작성시

458

kmj3134

작성한 질문수 5

0

강의 잘 듣고 있습니다.

강의참고하면서 다른 API조회하는 통신을 해보려고하는데,
해당API의 request는
POST 형태로 String, Int가 포함된 갓을 요청받습니다.
하여

@FormUrlEncoded

@POST("end_point")

suspend fun func(  @Field ("aa") aa:String

, @Field("bb") bb:Int ) : aaa
형태로 서비스인터페이스를 작성하였습니다.

허나 해당 서버(?)에서 aa,bb 모두 String 형태로  값이 넘어와  제대로된 response를 받지못하고 있습니다.

검색 해보니, 전송할 값들을 @Body에 담아보내면 Int형을 그대로 보내진다하여 적용해봤지만, Json형태로 정송되어 이 또한 정상적으로 response를 받지 못했습니다.

이와 관련하여 더 참고할 수 있는 부분이 있을까 조언 구합니다.
((retrofit통신시 Field가 Int에서 String으로 바뀌는 문제))

jetpack android kotlin

답변 11

0

오준석

Retrofit은 워낙 사용법이 간단해서 이렇게 문제가 지속될 확률이 적은데 서버쪽 문제는 아닐까요?

로그는 HttpLoggingInterceptor 로 확인하는 방법이 최선이고요.

Retrofit이 서드파티 라이브러리라서 안드로이드 공식문서에서는 가이드 제공이 없습니다.

0

kmj3134

네.. 
그럼 지금 타임아웃 에러만 계속 나는데..
다른 에러를 확인할 방법이 있을까요..?

자바에서 enqueue-callback 으로 통신할때
onFailure에서 확인 할 수있는것처럼
아예 통신이 되지 않았을때 활인할 수 있는 로그는 어떻게 남길 수 있을까요..
현재느 통신할때 HttpLoggingInterceptor만 사용해서 확인하는데 
안드로이드 공식문서에서 잘 못찾겠어서요..
혹시 어느부분을 확일해야 할지..

0

오준석

죄송합니다 제가 요새 너무 바뻐서 보지 못 하고 있습니다.

11월 중순까지 바쁠 것 같아서 중순 이후에나 볼 수 있을 것 같습니다. ㅠㅠ

0

오준석

제가 요즘에 바뻐서 테스트해 볼 시간이 없었는데요. 오늘중으로 테스트 해 보고 결과 알려드리겠습니다.

참고로 안드로이드에서 커넥션 타임아웃이 10초 넘어가면 응답없음으로 규정하니 1분으로 늘리시면 안 됩니다.

0

kmj3134

같은 문제로 자꾸 귀찮게 해드리는거같네요..

@FormUrlEncoded 제거하고 @Body로 보내면 각각파라메타의 타입은 지켜집니다 
다만, 
보내는 데이터전체가 Content-Type: application/json; 이 되어서그런지

I/okhttp.OkHttpClient: <-- HTTP FAILED: java.net.SocketTimeoutException: timeout

E/AndroidRuntime: FATAL EXCEPTION: main
 

timeOut에러가 납니다.

그래서 OkHttpClient 에서 connectTimeout등, 연결시간을 1분까지 늘려보았지만
여전히 timeOut에러가 발생합니다.

어떤걸 더 참고해야할지 감이 안잡힙니다..ㅠㅠ

0

오준석

그렇군요.

@FormUrlEncoded 제거하고 @Body로 보내면 될 것 같습니다만 이것도 문제가 있으시다는 것이지요?

음.. 저는 두 방법 중 하나는 반드시 되었던 것으로 기억을 하는데. 무슨 문제일까요..

0

kmj3134

혹시 몰라 같은상황인 경우 찾아 첨부합니다
https://stackoverflow.com/questions/50024022/retrofit-transform-my-fields-int-in-string

0

kmj3134

어떤테스트를 말씀하시는지 정확히 모르겠지만,
포스트맨에서 요청값타입int로 설정하고 값 담아서 요청했을때 response잘 되었습니다.

클라에서 보낼때 로그로 타입이 Int라는것을 확인했는데
서버에서 클라에서 오는 타입을 확인하니 String이었습니다..  

0

오준석

혹시 postman 같은 툴에서 테스트 했을 때는 잘 되나요?

0

kmj3134

서버측에서는 값을 Int로받아야하는데 (서버에서 요청하는 bb의형태가 Int입니다)
제가 넘긴 값이  서버에서 String으로 찍힙니다. 


Int로 보낸값이 String으로 바뀝니다..ㅜㅜ

0

오준석

혹시 서버 측에서 모든 값을 String으로 받는다거나 하지는 않을까요?

사용하고 계신 방법에 문제가 없습니다.

해당 서버에서 어떤 형태로 요청해야 하는지 가이드가 있을텐데 그것에 맞춰야 하는데 확인이 필요해 보입니다.

Room_DB코틀린 버전에서 에러 나시는 분들

1

294

1

Room db kotlin 관련질문

0

282

2

Room db kotlin 강의중에서

0

420

3

공적 마스크 조회 앱 자바 버전 질문입니다.

0

388

1

RecyclerView Adapter에서 ViewModel 접근에 관하여 질문 드립니다.

0

1401

1

네비게이션 그래프

0

229

1

Repository에서 Error처리를 하고 싶은데 잘 모르겠습니다.

0

755

1

getAll을 직접부를 때 무한무프 질문있습니다.

0

209

1

라이브 데이터 + 데이터 바인딩 질문드립니다!

0

219

1

/?m=5000 에 대해서 질문드립니다.

0

228

2

@Inject lateinit var repository: MyRepository

0

285

1

이번편 강의의 3:52 부분까지 공부했는데 에러가 걸립니다

0

412

2

let이나 apply는 주로 어떤 상황에 사용하나요?

0

262

2

Call<StroeInfo> 를 StoreInfo로 바꾸는 부분 질문

0

240

1

Room DB 파일을 확인하고 싶어요.

0

2338

1

SavedStateHandle 앱 종료 시킨 후, 다시 열면 0으로 초기화 되어있습니다ㅠ

0

475

1

안녕하세요.

0

442

4

NullPointerException이 뜨는데 이것도 마스크 재고 API 중지 때문인가요

0

287

1

viewModel 질문 있습니다.

0

390

1

suspend

0

241

2

retrofit2에서 코루틴을 이용하는 이유가 무엇인가요?

1

272

2

UpdateItems 생성

0

147

1

질문있습니다.

1

234

3

질문있습니다!

0

268

1