🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

서비스 인터페이스 작성시

20.10.25 17:34 작성 조회수 242

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으로 바뀌는 문제))

답변 11

·

답변을 작성해보세요.

0

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

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

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

0

kmj3134님의 프로필

kmj3134

질문자

2020.11.03

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

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

0

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

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

0

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

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

0

kmj3134님의 프로필

kmj3134

질문자

2020.10.30

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

@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님의 프로필

kmj3134

질문자

2020.10.27

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

0

kmj3134님의 프로필

kmj3134

질문자

2020.10.27

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

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

0

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

0

kmj3134님의 프로필

kmj3134

질문자

2020.10.25

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


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

0

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

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

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

채널톡 아이콘