마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 앱 레트로핏 통신 관련 질문입니다.

0 추천
코틀린 언어로 레트로핏 + 코루틴 형태로 앱을 제작중인데

웹서버는 php입니다.

웹서버로 요청시 앱 상에서는 한번 요청한걸로 뜨는데...

실제 웹서버시는 3번에 요청이 들어갔네요

레트로핏으로 응답은 한번만 들어옵니다.

인설트 하는 웹서비스 태우다가 3개가 추가되어있길래 알았네요

왜 그럴까요 미치겟습니다.ㅠ
안드로이드, 코틀린, 코루틴, 레트로핏 님이 2019년 8월 20일 질문
2019년 8월 20일 수정

1개의 답변

0 추천
적어주신 것만으로는 원인이 서버에 있는지 클라이언트에 있는지 알기 어렵습니다. 서버와 클라이언트에 패킷이 어떻게 왔다 갔다 하는지 캡쳐해서 확인해보는 것이 좋습니다.

레트로핏 상에서는 한번의 요청과 한번의 응답만 있었다면 재전송이 okhttp 단에서 일어났을 가능성이 있습니다. okhttp의 RetryAndFollowUpInterceptor 를 디버거로 잡고 한번 확인해보세요. 요청이 여러번 가는 것은 그럴수도 있는데 한번의 인서트 요청에 3개가 추가되었다면 서버가 일반적으로 API에서 사용하는 방식과 다르게 구현되었거나 잘못구현되었을 가능성이 있습니다.
회색 (21,000 포인트) 님이 2019년 8월 20일 답변
답변 감사드립니다. 레트로핏을 안쓰다보니 익숙하지 않아서
addNetworkInterceptor 의 존재를 몰랐네요
찍어보니 다음과 같은 로그가 보입니다.
처음 웹서버에 보낼때는 파라메타의 내용만 암호화 해서 보내고
응답값은 전체를 암호화 해서 보내는데요

로그를 보면 총 3번의 요청중 2번은 암호화된 구문으로 보이고 마지막에는 복호화된 값으로 보이네요

혹시 암호화 되어있는 응답값이.... 전체가 암호화 되어있다보니 json 타입에 맞게 복호화를 못해서 발생하는 문제인가요?? 이경우면 마지막에 복호화된 응답값으로 보이는것도 이상하긴 합니다.

이부분을 어떻게 해결해야 할까요?


D/OkHttp: --> POST
D/OkHttp: Content-Type: application/x-www-form-urlencoded
D/OkHttp: Content-Length: 272
D/OkHttp: 요청전문
D/OkHttp: --> END POST (272-byte body)

D/OkHttp: --> POST  http/1.1
D/OkHttp: Content-Type: application/x-www-form-urlencoded
D/OkHttp: Content-Length: 272
D/OkHttp: Host:
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Accept-Encoding: gzip
D/OkHttp: User-Agent: okhttp/3.10.0
D/OkHttp: 요청전문
D/OkHttp: --> END POST (272-byte body)

D/OkHttp: <-- 200 OK  (739ms)
D/OkHttp: Date: Tue, 20 Aug 2019 09:50:17 GMT
D/OkHttp: Server: Apache/2.4.25 (Win64) OpenSSL/1.0.2k PHP/5.5.30
D/OkHttp: X-Powered-By: PHP/5.5.30
P3P: CP=\"ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"
D/OkHttp: Set-Cookie: PHPSESSID=ae68vrisc1mgac45hfht0go9t4; path=/
D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
D/OkHttp: Pragma: no-cache
D/OkHttp: Content-Length: 344
D/OkHttp: Keep-Alive: timeout=5, max=100
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Content-Type: text/html;charset=UTF-8
D/OkHttp: 암호화된 응답값
D/OkHttp: <-- END HTTP (344-byte body)

 D/OkHttp: --> POST  http/1.1
D/OkHttp: Content-Type: application/x-www-form-urlencoded
D/OkHttp: Content-Length: 272
D/OkHttp: Host:
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Accept-Encoding: gzip
D/OkHttp: User-Agent: okhttp/3.10.0
D/OkHttp: 요청전문
D/OkHttp: --> END POST (272-byte body)

D/OkHttp: <-- 200 OK  (661ms)
D/OkHttp: Date: Tue, 20 Aug 2019 09:50:18 GMT
D/OkHttp: Server: Apache/2.4.25 (Win64) OpenSSL/1.0.2k PHP/5.5.30
D/OkHttp: X-Powered-By: PHP/5.5.30
D/OkHttp: P3P: CP=\"ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"
D/OkHttp: Set-Cookie: PHPSESSID=eivostkpe32vk005uo9n6s1re3; path=/
D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
D/OkHttp: Pragma: no-cache
D/OkHttp: Content-Length: 344
D/OkHttp: Keep-Alive: timeout=5, max=99
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Content-Type: text/html;charset=UTF-8
D/OkHttp: 암호화된 응답값
D/OkHttp: <-- END HTTP (344-byte body)

D/OkHttp: --> POST  http/1.1
D/OkHttp: Content-Type: application/x-www-form-urlencoded
D/OkHttp: Content-Length: 272
D/OkHttp: Host:
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Accept-Encoding: gzip
D/OkHttp: User-Agent: okhttp/3.10.0
D/OkHttp: 요청전문
D/OkHttp: --> END POST (272-byte body)

D/OkHttp: <-- 200 OK  (600ms)
D/OkHttp: Date: Tue, 20 Aug 2019 09:50:19 GMT
D/OkHttp: Server: Apache/2.4.25 (Win64) OpenSSL/1.0.2k PHP/5.5.30
D/OkHttp: X-Powered-By: PHP/5.5.30
D/OkHttp: P3P: CP=\"ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"
D/OkHttp: Set-Cookie: PHPSESSID=ptkfo8varh2rujr3mq8f422uv7; path=/
D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
D/OkHttp: Pragma: no-cache
D/OkHttp: Content-Length: 344
D/OkHttp: Keep-Alive: timeout=5, max=98
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Content-Type: text/html;charset=UTF-8
D/OkHttp: 암호화된 응답값
D/OkHttp: <-- END HTTP (344-byte body)

D/OkHttp: <-- 200 OK  (2248ms)
D/OkHttp: Date: Tue, 20 Aug 2019 09:50:19 GMT
D/OkHttp: Server: Apache/2.4.25 (Win64) OpenSSL/1.0.2k PHP/5.5.30
D/OkHttp: X-Powered-By: PHP/5.5.30
D/OkHttp: P3P: CP=\"ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"
D/OkHttp: Set-Cookie: PHPSESSID=ptkfo8varh2rujr3mq8f422uv7; path=/
D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
D/OkHttp: Pragma: no-cache
D/OkHttp: Content-Length: 344
D/OkHttp: Keep-Alive: timeout=5, max=98
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Content-Type: text/html;charset=UTF-8
D/OkHttp: 복호화된 응답 값
D/OkHttp: <-- END HTTP (245-byte body)
...