1

생성 된 클라이언트 라이브러리 (기본 Android Studio 1.02/Gradle 구성으로 제작 됨)에서 문자열 매개 변수를 AppEngine Dev Server (버전 1.9.15)로 전달할 때, 문자열 매개 변수의 콜론이 URL 인코딩되지 않은 것을 발견했습니다. 그런 다음 콜론은 404를 반환하는 dev 서버에 의해 요청 구조의 일부로 해석됩니다. 프로덕션 환경에서는이를 테스트하지 않았습니다.Google Cloud Endpoints, Android Studio로 콜론 (:) 인코딩

이것이 단순히 클라우드 엔드 포인트 라이브러리 또는 dev 서버의 버그 일지는 모르겠지만 누구나 수정 사항이나 해결 방법이 있으면 감사 할 것입니다. 수동으로 URL 인코딩 및 디코딩 매개 변수가 작동하지만 매우 우아하지 않습니다. 감사!

예 :

GET /_ah/api/.../param:with:colon HTTP/1.1

하고 응답 :

HTTP/1.1 404 Not Found

STR

[Api].[method]("param:with:colon").execute().getItems();

요청을 생성 콜론이없는 ing 매개 변수는 정상적으로 작동합니다.

답변

1

@ApiMethod 주석에 명시 적 경로 특성을 제공하여이 매개 변수를 path 매개 변수에서 쿼리 매개 변수로 바꾸는 것이 하나의 대안입니다.

다음 예제 코드에서. 기본적으로 매개 변수 "content"는 경로 매개 변수입니다. "패스"속성을 첨가 한 후

@ApiMethod(name = "sayHi", httpMethod = "get") 
    public HelloGreeting sayHi(@Named("content") String content) throws Exception { 
    return new HelloGreeting(content); 
    } 

(여기서 기본 경로 "sayhi/콘텐츠 {}"인) "콘텐츠"변수가 전달 쿼리 매개 변수로부터 /로 추출한다.

@ApiMethod(name = "sayHi", httpMethod = "get", path="sayhi") 
    public HelloGreeting sayHi(@Named("content") String content) throws Exception { 
    return new HelloGreeting(content); 
    } 
+0

고마워요! 그것은 큰 도움이됩니다. 그러나 경로 매개 변수가 기본적으로 정리되지 않는 것이 이상하게 보입니다. – Tad

관련 문제