2017-12-09 23 views
0

제 문제는 내가 엔드 포인트 v2로 마이 그 레이션 한 것입니다. 그리고 어떤 시점에서 내 GCM 등록 코드가 작동을 멈췄습니다.엔드 포인트에서 생성 된 클라이언트 라이브러리

중단 된 작업입니까?

이 두 번째 줄은 내가 이죠 수동으로 요청 자신을 보낼 때 일어나는 것이다

App Engine Log Viewer

: 더 구체적으로, 생성 된 클라이언트 라이브러리는이 이미지의 맨 윗줄에 제공하는 형태로 POST 요청을 보내도록 시도 (쿼리 문자열 대신 URL 조각에 데이터를 보내도록 변경). 이 작동하고 내 데이터베이스에 추가됩니다.

@ApiMethod(name = "registerDevice", httpMethod = "post") 
public void registerDevice(@Named("regId") String regId) { 
    if(findRecord(regId) != null) { 
     log.info("Device " + regId + " already registered, skipping register"); 
     return; 
    } 
    RegistrationRecord record = new RegistrationRecord(); 
    record.setRegId(regId); 
    ofy().save().entity(record).now(); 
} 

어떻게이 문제가 해결 될 수

Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null) 
    .setRootUrl("https://"+Constants.PROJECT_ID+".appspot.com/_ah/api/"); 
regService = builder.build(); 
regService.registerDevice(gcmRegistrationId).execute(); 

자체는 다음과 같습니다 엔드 포인트 :

등록

는 표준 API 빌더를 사용하여 전송됩니다?

내 코드를 배포하고 생성 된 다음 명령을 사용하고 있습니다 : 당신이 매개 변수가 쿼리 문자열을하고 싶다면

gradlew endpointsOpenApiDocs 
gcloud endpoints services deploy backend\build\endpointsOpenApiDocs\openapi.json 
gradlew appengineDeploy 
gradlew endpointsClientLibs 
+0

매개 변수를 쿼리 문자열로 사용하려면 '@ Nullable'으로 표시해야합니다. – saiyr

+0

나는 그것이 어떻게 보내질 지 특별히 신경 쓰지 않는다. 내가 가진 문제는 404입니다. 시스템이 잘못된 클라이언트 라이브러리를 생성하는 것 같습니다. 아니면이 경우에 nullable을 추가 할 것인가? – Knossos

+0

@ saiyr 당신의 충고에 따라'@ Nullable'을 사용했습니다. 잘 작동했습니다. 내 새로운 코드는 다음과 같다 :'regService.register(). setRegId (regId) .execute();'. 당신이 올바른 방향으로 나를 지적했듯이, 당신이 대답을하면 나는 그것을 행복하게 받아 들일 것입니다. – Knossos

답변

1

은, 그것은뿐만 아니라 @Nullable 표시되어야합니다. 이렇게하면 매개 변수를 경로 밖으로 가져옵니다. 이전 프레임 워크와 새로운 프레임 워크의 구성간에 약간의 불일치가있는 것처럼 보이지만 쿼리 매개 변수에 @Nullable을 사용하고 경로 매개 변수에 대해 생략하면 더 정확합니다.