2016-11-09 9 views
0

원격 프로 시저 호출의 페이로드에있는 데이터 필드를 이해하려고합니다. 타임 스탬프 유형 개체와 함께 Date가 가장 혼란 스럽습니다.디버깅 목적으로 GWT RPC 페이로드에서 날짜 및 타임 스탬프 역 직렬화

전체 요청 페이로드는 다음과 같습니다

7 | 0 | 8 | https://myapp.com/myapp/client/|72119BCB4CE5FB8D147EA76E8006F76E|com.myapp.service.MyService|updateTimepoint|java.lang.String/2004016611|java.util.Date/3385151746|554455|java.sql.Timestamp/3040052672|1|2|3|4|2|5|6|7|8|VhGcuow|0|

이 서비스 인터페이스가 코드에서 정의 된 바와 같이이다 :

상기 값의 배열
public void updateTimepoint(String myId, Date timepoint, 
        AsyncCallback<Void> async); 

, 난 굵은 부 (아래 참조)의 송신을 참조 말할 것 java.util.Date 객체와 중간에 "554455"는 myId입니다 (유스 케이스에서 알 수 있습니다). myId 변수가 중간에 왜 삽입되었는지 설명 할 수 없습니다.

java.util.Date/3385151746 | 554455 | java.sql.Timestamp/3040052672

이제 난독 화 코드를 디버깅 중이므로 브라우저의 소스 탭을 보면 옵션이 아닌 것처럼 보입니다. 그것은 이상한 JS 날짜 참조를 볼 것이므로, 많은 도움이되지는 않을 것입니다. 어느 쪽을 읽을 지 모르겠습니다.

그렇다면 페이로드 바스에서 날짜 + 타임 스탬프를 읽을 수있는 코드로 다시 컴파일하는 방법은 무엇입니까?

감사합니다.

P. 또는 - VhGcuow? as per GWT java.util.Date serialization

+0

데이터에 묻어 야 할 날짜를 알려주는 경우 도움이 될 수 있습니다. 값 3385151746, 3040052672 및 2004016611은 ECMAScript 기원에서 초 또는 밀리 초로 처리 될 때 시간 값으로 보이지 않습니다. – RobG

+0

나는 그것이 8/11 (11 월)/2016 16 : 18 : xx 일 것으로 기대합니다. 하지만 그게 운동의 목표입니다 - 그게 몇 가지 의문의 여지가있는 것처럼 응용 프로그램이 보내는 Date 개체 값이 맞는지 확인하는 것입니다. – alexp

답변

1

@RobG는 As 값이 값이 아니며 Date, Timestamp 유형에 대해 자세히 설명합니다. 페이로드는 |으로 구분되며, /은 클래스 이름 문자열의 일부입니다. 페이로드에있는 문자열 및 기타 콘텐츠의 순서에 대한 자세한 내용은 Serializing RPC-GWT (올해 초 답변)을 참조하십시오.

VhGcuow은 base64 인코딩 길이 일 가능성이 큽니다. 날짜 (및 아마도 타임 스탬프)는 long 필드로 serialize되므로 long 값은 1970 년 1 월 1 일 이후의 밀리 초 수를 나타냅니다. 이해하고 디코딩 할 수있는 방법에 대한 자세한 내용은 RPC-GWT Serialization/java.util.Date Encoding을 참조하십시오. RPC가 작동 함을 단순히 신뢰하지 않고

RPC는 수년 동안 변경되지 않았으며 올바르게 날짜를 직렬화하는 데 문제가 없었던 수십만 명의 GWT 개발자가 사용하고 있습니다. 시간대 문제와 같은 다른 문제가 발생할 가능성이 있습니다 - 문제의 세부 사항과 함께 "다른"질문을하고 "작동하는"테스트 케이스를 사용하면보다 신속하게 답을 얻을 수 있습니다.

+0

고마워, 콜린. 링크를 확인해 보겠습니다. 어떤 직렬화가 낮은 수준의 문제는 기대하지 않습니다. 잘못된 Date 객체를 잡아 내 클라이언트 측 코드이며 서버에 전달되는 내용을 확인하려고합니다. – alexp

+0

다시 한번 감사드립니다. 내 문제를 해결하는 데 필요한 모든 정보를 찾았습니다. – alexp