Ich habe versucht, eine Datei in Google Cloud Storage mit XML-API hochzuladen. Ich habe die richtige GoogleAccessId, Ablaufdatum und Signatur für jeden Upload generiert. Das seltsame Ding ist, dass ich Datei mit Postman (Anwendung für Chrome) PUT kann, so bin ich sicher, dass die URL in Ordnung ist. Ich kann es einfach nicht mit meinem Android-Java-Programm PUT (es kehrt zu mir 403 Fehler). Der Quellcode Durchführung Upload ist hier (es Basis auf diese: https://cloud.google.com/storage/docs/access-control#Signing-Strings):HttpURLConnection PUT zu Google Cloud Storage mit Fehler 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");
}
Dokumentation für PUT Objekt: https://cloud.google.com/storage/docs/xml-api/put-object-upload
jemand in dieses Problem suchen und geben Sie mir Hinweise, was man könnte mit diesem schief gelaufen ein?
Mögliches Duplikat von http://stackoverflow.com/questions/17225638/forbiddenerror-when-attemputing-to-write-file-to-gcs-from-gae-python-app Wahrscheinlich ist Ihre Android App nicht richtig authentifiziert und in Chrome sind Sie (ich nehme an, Sie sind in Ihrem Google-Konto in Chrom angemeldet) – morpheus05
Ich denke nicht, dass dies ein Punkt ist, da für Postman es auch funktioniert, wenn ich von einem meiner Konten abgemeldet bin. Es muss eine andere Ursache geben, aber mir sind die Ideen ausgegangen. – SmiglowiecX
Wenn Sie mit signierten URLs arbeiten, könnte die URL falsch signiert sein, – morpheus05