これは別のquestion about URL shortenerに関連しています。 URL短縮ツールのコードは、スタンドアロンJavaとAndroidの両方でうまく動作します。しかし、このコードを再利用してカスタムGoogle App Engineアプリケーションと通信すると、コードはスタンドアロンJavaで完全に正常に動作しますが、Androidから使用すると空のself.request.bodyが生成されます。 なぜですか?一度、Googleの短縮URLを使用して、Android上で、以下のコードを実行し、この現象を再現するにはgoogle-api-java-client AndroidのJSONパーサーは空のself.request.bodyを生成します。
: https://www.googleapis.com/urlshortener/v1/url
、一度WebサーバへのカスタムURLを持ちます。 スタンドアロンJavaの同じコードは、どちらの場合もまったく同じ要求を期待通りに生成します。 Androidでは、カスタムURLの場合、コンテンツ本文は空で、コンテンツ長は設定されていません。 私はgoogle-api-java-client 1.2.2-alphaを、jackson 1.7.1で実行しています。
コードスニペット:
HttpTransport transport = GoogleTransport.create();
HttpRequest request = transport.buildPostRequest();
// Change this URL below from Google Shortener URL, to a custom URL,
// and the code on Android produces an empty body and Content-Length is not set
request.setUrl("GoogleAppEngine url goes here");
JsonCContent content = new JsonCContent();
GenericData data = new GenericData();
data.put("id", "whatever");
content.data = data;
request.content = content;
HttpResponse response = request.execute();
これを調査し、分析と慎重なフィードバックを書き留めていただきありがとうございます。私はまだApache HTTPクライアントのHTTP転送の実装で何が問題なのかを最終的に判断しようとしています。ところで、バージョン1では。3の開発では、使用されるHTTPトランスポートの実装がもう隠されることはありません。これは、デバッグ作業を簡単にしてくれたと思います。 –