Я пытаюсь загрузить изображение в файл PHP на сервере, используя метод POST. Я пытался сделать это с помощью LoopJ AndroidAsyncHttp, но безуспешно. Сервер также требует базового имени пользователя и пароля для аутентификации. До сих пор мне удавалось успешно отправлять обычные параметры данных (это простые строковые пары с ключевыми значениями, такие как: «имя»: «Джо») и получать ответ от сервера. Однако, как только я пытаюсь прикрепить изображение к POST-запросу, запрос завершается с ошибкой, выдавая следующие ошибки:
Error Message: null
Error Cause: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
Код, который я использую, соответствует примерам, приведенным на http://loopj.com/android-async-http/ очень внимательно. Вот код, который я использую:
RequestParams params = new RequestParams();
params.put("name",name);
String path = "/path/to/img";
File myFile = new File(path, "picture.png");
if( myFile.exists() ) {
try {
params.put("picture", myFile);
} catch(FileNotFoundException e) {
Log.d("App","Error Attaching Picture: " + e.toString());
}
} else {
Log.d("App","File DOES NOT exist");
}
String urlString = "url-to-server";
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("User", "Pass");
client.post(urlString, params, new AsyncHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
super.onSuccess(statusCode, headers, responseBody);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
super.onFailure(statusCode, headers, responseBody, error);
Log.d("App","Upload Failed!");
Log.d("App","Error Message: " + error.getMessage());
Log.d("App", "Error Cause: " + error.getCause());
}
@Override
public void onStart() {
super.onStart();
}
});
Так что я делаю неправильно здесь? Я также дважды проверил, и файл, который я читаю, чтобы получить изображение, действительно существует, и в нем есть данные, поэтому я исключил это как потенциальную причину. Я слишком долго боролся с этой проблемой. Заранее спасибо всем, кто может помочь!