XML APIを使用してGoogle Cloud Storageにファイルをアップロードしようとしました。 GoogleAccessId、有効期限、署名がアップロードごとに生成されています。奇妙なことは、Postman(Chrome用アプリケーション)を使用してファイルをPUTできることです。そのURLは大丈夫です。私はちょうど私のAndroidのJavaプログラム(それは私に403エラーを返します)を使用してPUTすることはできません。アップロードを実行するソースコードは(:https://cloud.google.com/storage/docs/access-control#Signing-Stringsこの1にそれベース):ここでPUTオブジェクトのためのGoogle Cloud StorageへのHttpURLConnection PUTエラー403
URL url;
HttpURLConnection connection;
try {
url = new URL("http://google-testbucket.storage.googleapis.com/[email protected]unt.com&Expires=1331155464&Signature=BClz9e4UA2MRRDX62TPd8sNpUCxVsqUDG3YGPWvPcwN%2BmWBPqwgUYcOSszCPlgWREeF7oPGowkeKk7J4WApzkzxERdOQmAdrvshKSzUHg8Jqp1lw9tbiJfE2ExdOOIoJVmGLoDeAGnfzCd4fTsWcLbal9sFpqXsQI8IQi1493mw%3D");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("Test");
out.close();
Log.i("TAG", "PUT Response code: " + connection.getResponseCode());
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("TAG", "MalformedURLException");
} catch (ProtocolException e) {
e.printStackTrace();
Log.e("TAG", "ProtocolException");
} catch (IOException e) {
e.printStackTrace();
Log.e("TAG", "IOException");
}
ドキュメント:https://cloud.google.com/storage/docs/xml-api/put-object-upload
は、誰もがこの問題に見て、私はこれで間違っていたかもしれないものをほのめかす与えることができます1?
http://stackoverflow.com/questions/17225638/forbiddenerror-when-attempting-to-write-file-to-gcs-from-gae-python-appの重複している可能性があります。あなたのAndroidアプリが正しく認証されていない可能性がありますあなたはクロムであなたのGoogleアカウントにログインしていると仮定しています。 – morpheus05
私はこれがポイントだとは思わない、なぜなら私は自分のアカウントからログアウトしても働くからです。根本的な根本原因は違いますが、アイディアが足りなくなります。 – SmiglowiecX
署名されたURLを使って作業する場合、URLが正しく署名されない可能性があります。 – morpheus05