Parse Android не может загрузить изображение с постоянно перемещенной ошибкой
Я получаю следующее исключение при попытке загрузить ParseFile с помощью getData()
метод.
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)
ParseFile - это jpg, который загружается и затем помещается в объект ParseObject ImageObject
, ImageObject
имеет несколько других параметров, таких как заголовок, ширина, высота, которые загружаются и загружаются правильно. Само изображение загружается правильно, что подтверждается через панель управления. Только во время загрузки я получаю вышеуказанное исключение.
Это мой код загрузки
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);
}
}
мой код загрузки в значительной степени ParseFile.getFile()
после того, как я получил все ImageObjects
через ParseQuery.
Я следовал строке 43 из ParseAWSRequest.java и нашел это,
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())));
}
Это и "окончательно удаленные" указывает на мой обратный прокси-сервер nginx, который возвращает код 301 при перенаправлении на https. К сожалению, я не уверен, куда идти дальше.
Дополнительная информация, я заблокировал порт 80(http) в брандмауэре для теста, и кажется, что для загрузки parse-android-sdk пытается загрузить с http. Что странно, потому что я указал свою ссылку на сервер синтаксического анализа с помощью "https" и тот факт, что загрузка работает нормально. Я могу видеть загруженное изображение, используя панель управления на моем сервере.
С помощью,
- Parse Server 2.2.13
- Разобрать Android SDK 1.13.1
- Parse Dashboard 1.0.14
1 ответ
Я нашел решение этой проблемы, просто загрузив файл. я использовал ParseFile.getUrl()
метод, чтобы получить URL, а затем использовать его для загрузки и использования файла.
В моем случае это было .jpg
файлы. А потом я использовал внешнюю библиотеку, которая заботится обо всех загрузках / кэшировании / загрузке изображений.
Обе эти библиотеки работают хорошо