Ho provato a caricare un file su Google Cloud Storage utilizzando l'API XML. Ho il diritto GoogleAccessId, la data di scadenza e la firma generate per ogni caricamento. La cosa strana è che posso inserire il file utilizzando Postman (applicazione per Chrome), quindi sono sicuro che l'URL è ok. Non riesco a METTERLO usando il mio programma Android Java (mi restituisce l'errore 403). Il caricamento di codice sorgente di esecuzione è qui (base su questo: https://cloud.google.com/storage/docs/access-control#Signing-Strings):HttpURLConnection PUT a Google Cloud Storage con errore 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");
}
Documentazione per PUT Oggetto: https://cloud.google.com/storage/docs/xml-api/put-object-upload
Qualcuno può esaminare questo problema e darmi dei suggerimenti che cosa potrebbe andato storto con questo uno?
Possibile duplicato di http://stackoverflow.com/questions/17225638/forbiddenerror-when-attempting-to-write-file-to-gcs-from-gae-python-app Molto probabilmente l'app Android non è autenticata correttamente e in chrome sei (presumo tu abbia effettuato l'accesso sul tuo account google in chrome) – morpheus05
Non penso che questo sia un punto, visto che per Postman funziona anche quando sono disconnesso da uno dei miei account. Ci deve essere una diversa causa principale, ma ho esaurito le idee. – SmiglowiecX
Se lavori con URL firmati, l'URL potrebbe essere firmato erroneamente, – morpheus05