2016-11-07 13 views
0

このエンドポイントが存在するURL(https://<my app name>.appspot.com/_ah/api/endpoints/v1/test)を直接呼び出すときに、自分のエンドポイントに来るHTTP POSTリクエストの元の本体を取得し、本体に供給したいと考えています。App EngineエンドポイントのRaw HTTPリクエスト本文

@ApiMethod(name = "test", path = "test", httpMethod = ApiMethod.HttpMethod.POST) 
public WrappedBoolean test(final HttpServletRequest request, ServletContext servletContext) throws Exception { 

    //??? 
    return new WrappedBoolean(true); 
} 

残念ながら、それを読んで、その後HttpServletRequestからInputStreamを取得しようと、すべてのデータが既に読み込まれている意味、私に-1を与える:ここでは、正常に呼び出されるエンドポイントの方法があります。 App Engineのエンドポイントのランタイムはすでにリクエストを処理している可能性が高いため、これは意味があります。

誰かが、このエンドポイントにPOSTされた元のPOSTリクエストを保持する方法を確認していますか?

答えて

0

元のメッセージを簡単に復元する方法はないようです。リクエストの前にフィルターを配置し、要求を読み込んで属性に保存し、エンドポイント呼び出し中にその属性を取得するなど、追加の操作を行う必要があります。これはすべて、SPIランタイム(エンドポイント)の入力ストリームを管理しないように慎重に行う必要があります。そうしないと、エンドポイントは呼び出されません。 とにかく、面倒すぎる。私はエンドポイントが本当に意味を持たない何かをやって放棄し、ちょうど直接Javaサーブレットを採用しました。

関連する問題