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

android에서 retrofit2으로 서버호출 시 long 값이 변합니다.

0 추천

아래의 코드에서 서비스의 findByClassesIdAndAttendanceDate의 파라메터인 currentClassDate.getTime()의 값이 예를들어 1469977200000(long data)으로 정상적으로 주고 호출하여도 서버에서 RequestParam으로 받아올때는 1098384768(long data)로 이상하게 변환되어서 가져옵니다..(간헐적으로) debug를 찍어보아도 주는 데이터는 정상적인 값이지만 받아오는값은 이상하게 변환이 됩니다.

매번 그렇다면 조금이라도 찾기 편할 것 같은데 그렇지 않으니 답답할 뿐입니다.

고수님들의 조언 여쭙겠습니다.. 감사합니다.

 

p.s 테스트를 하다보니 loadAttendance에 breakPoint를 걸면 변환된 이상한 값이 들어오고, 그냥 서버에서만 확인 할 시 제대로 잘 작동합니다. 그러나 사용자는 이슈가 나오니 갈피를 잡지 못하겠네요 ㅠ_ㅠ

 

protected void loadAttendance() {
   attendanceModels = new ArrayList<>();

   Call<ResultModel<List<AttendanceModel>>> call = attendanceService.findByClassesIdAndAttendanceDate(currentClasses.getId(), currentClassDate.getTime());
   call.enqueue(new SuccessCallback<List<AttendanceModel>>() {
      @Override
      public void onSuccess(List<AttendanceModel> data) {
         attendanceModels.clear();
         studentAttendance.clear();

         attendanceModels = data;

         if(studentAttendance.isEmpty()) {
            for(int z = 0; z < attendanceModels.size(); z++) {
               HashMap<String, Object> item = new HashMap<>();
               item.put("id", attendanceModels.get(z).getId());
               item.put("student", attendanceModels.get(z).getStudent());
               item.put("attendance", attendanceModels.get(z).getAttendanceStat());
               item.put("reason", attendanceModels.get(z).getReason());
               studentAttendance.add(item);
            }
         }
         classMembersAdapter.notifyDataSetChanged();
      }
   });
}
 
AttendanceService.java
@GET("/rest/teacher/getAttendance")
Call<ResultModel<List<AttendanceModel>>> findByClassesIdAndAttendanceDate(@Query("class_id") int classesId,
                                   @Query("attendance_date") long attendanceDate);
 
서버컨트롤러.java
@RequestMapping(value="/rest/teacher/getAttendance", method={RequestMethod.POST, RequestMethod.GET})
   public ResultModel<List<AttendanceModel>> getAttendance(
      @RequestParam(value = "class_id") int class_id,
      @RequestParam(value = "attendance_date") long attendance_date,
      HttpServletRequest request, HttpServletResponse response) {
      List<AttendanceModel> submitList = classesService.getAttendance(class_id, attendance_date);
      return ResultModel.success(submitList);
   }
익명사용자 님이 2016년 7월 30일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...