Ich erhalte die folgende Ausnahme, wenn ich versuche, ein ParseFile unter Verwendung der Methode getData()
herunterzuladen.Parse Android schlägt fehl, Bild mit einem verschobenen dauernden Fehler zu downloaden
com.parse.ParseException: Download from S3 failed. Moved Permanently
at com.parse.ParseAWSRequest.onResponseAsync(ParseAWSRequest.java:43)
at com.parse.ParseRequest$3.then(ParseRequest.java:137)
at com.parse.ParseRequest$3.then(ParseRequest.java:133)
at bolts.Task$15.run(Task.java:917)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:908)
at bolts.Task.continueWithTask(Task.java:715)
at bolts.Task.continueWithTask(Task.java:726)
at bolts.Task$13.then(Task.java:818)
at bolts.Task$13.then(Task.java:806)
at bolts.Task$15.run(Task.java:917)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Die ParseFile ist ein jpg, die dann in eine ParseObject ImageObject
genannt setzen hochgeladen. Die ImageObject
hat mehrere andere Parameter wie Bildunterschrift, Breite, Höhe, die korrekt hochgeladen und heruntergeladen werden. Das Bild selbst wird korrekt hochgeladen, wie über das Dashboard bestätigt. Nur während des Downloads bekomme ich die obige Ausnahme.
Dies ist mein Upload-Code
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(tag, "Successfully uploaded image file");
ParseObject image = new ParseObject("imageObject"); //Create new Image-ParseObject and set values
image.put("author", ParseUser.getCurrentUser());
image.put("imageFile", file);
image.put("caption", caption);
image.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Log.d(tag, "Successfully saved image file to object");
}else{
Log.d(tag, "Failed to save image file to object", e);
}
}
});
} else {
Log.d(tag, "Failed to save image", e);
}
}
mein Downloadcode ziemlich ParseFile.getFile()
ist, nachdem ich abgerufen haben alle ImageObjects
durch eine parseQuery.
I Gefolgt Linie 43 von ParseAWSRequest.java und ich fand dies,
if (statusCode >= 200 && statusCode < 300 || statusCode == 304) {
// OK
} else {
String action = method == ParseHttpRequest.Method.GET ? "Download from" : "Upload to";
return Task.forError(new ParseException(ParseException.CONNECTION_FAILED, String.format(
"%s S3 failed. %s", action, response.getReasonPhrase())));
}
Dies und die "dauerhaft entfernt" zeigt auf meine nginx Reverse Proxy, der auf https ein 301-Code in der Umleitung zurückgibt. Leider bin ich mir nicht sicher, wo ich von hier aus fortfahren soll.
Zusätzliche Informationen, Ich habe Port 80 (http) in der Firewall für einen Test blockiert und es scheint, dass für den Download parse-android-sdk versucht, von http herunterladen. Das ist seltsam, weil ich meinen Parse-Server-Link mit "https" angegeben habe, und die Tatsache, dass der Upload gut funktioniert. Ich kann das hochgeladene Bild mithilfe des Dashboards auf meinem Server sehen.
verwenden,
- Parse Server 2.2.13
- Parse Android SDK 1.13.1
- Parse Armaturenbrett 1.0.14