1

Google AppEngine ローカル開発サーバーで実行するために、Jersey を使用してテスト メソッドを実装しました。メソッドのシグネチャは次のとおりです。

@GET
public String sayHello(@QueryParam ("name") String id) 

次の URL を Web ブラウザーに入力してテストします。

http://127.0.0.1:8888/sayhello?name=bill

、ブラウザは意図した「こんにちは、請求書」の応答を受け取ります。

ただし、この appengine アプリをクラウドにデプロイすると、意図した応答が得られません。名前は "Hello, " として null を返します。受信した QueryParam 値をログに記録したところ、クエリ パラメータがメソッドに渡されていないことが確認されました。

code.rest.impl.Test sayHello: name QueryParam received is:null

@DefaultParam も割り当てると、予想どおり、宣言されたデフォルト パラメータによって null 値が置き換えられます。

デプロイされたクラウド アプリが URL クエリ パラメーターを受信しないのに、ローカル開発サーバーがそれらを正しく受信するのはなぜですか? 変更が必要なセキュリティ構成はありますか?

4

1 に答える 1

0

これが機能しない理由を特定しました。実際には 2 つの理由がありますが、主な理由は、登録済みの Google AppEngine ドメインではないドメインからリクエストを転送していたことです。どちらのリクエストもそのまま受信されましたが、ログを見ると、処理が異なっています。

私が管理していない Google Apps ドメインまたは通常のドメインから転送された場合:

2012-06-04 13:18:48.146 /sayHello 200 443ms 0kb Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

12.216.181.76 - - [04/Jun/2012:10:18:48 -0700] "GET /program/sayHello?name=bill InfoByID HTTP/1.1" 200 52 "http://somedomain.org/sayHello?name=bill"

私が管理し、この AppEngine インスタンスに関連付けられている Google Apps ドメインから (リクエストの報告/処理方法の違いに注意してください):

2012-06-04 13:18:41.312 /sayHello?name=bill 200 44ms 0kb Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

12.216.181.76 - - [04/Jun/2012:10:18:41 -0700] "GET /sayHello?name=bill HTTP/1.1" 200 169 - "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"...

これが機能しなかったもう 1 つの (恥ずかしい) オーバーレイの理由は、https: を自動的に追加する Firefox プラグインを使用しているため、Web サービスをテストするためにブラウザーからポート 443 要求を行っていたためでした。

于 2012-06-04T18:16:27.777 に答える