Я получаю следующее сообщение об успехе, но все еще при получении предыдущее или ссылка на изображение по умолчанию получена, текущее выбранное изображение не загружается, API требует токен API, «_method»: «PUT» и URL изображения в качестве параметров, любой помощь будет оценена, код указан ниже, спасибо.
Также API сделан на php laravel, где нет метода PUT, поэтому основным методом является POST, но параметр «_method»: «PUT» позволяет загружать изображение, без _method оно становится сообщением POST, а любой другой параметр, кроме обязательного, пожалуйста. проверьте изображение.
Ответ {протокол = http / 1.1, код = 200, сообщение = ОК, URL =http://ec2-35-161-195-128.us-west-2.compute.amazonaws.com/api/account}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
StringBuilder stringBuilder = new StringBuilder(AUTHORIZATION);
sharedPreferences = this.getSharedPreferences(getResources().getString(R.string.token), 0);
stringBuilder.append(sharedPreferences.getString(getResources().getString(R.string.token), ""));
try {
uploadImage(file, stringBuilder.toString());
} catch (IOException e) {
e.printStackTrace();
}} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
public void uploadImage(File file, String auth) throws IOException {
OkHttpClient client = new OkHttpClient();
/*RequestBody requestBody1 = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("_method", "PUT")
.build();
RequestBody requestBody2 = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("image", file.getName(), RequestBody.create(MEDIA_TYPE.parse("image"), file))
.build();Request request = new Request.Builder()
.url("http://ec2-35-161-195-128.us-west-2.compute.amazonaws.com/api/account")
.addHeader("Authorization", auth)
.put(requestBody1)
.put(requestBody2)
.build();*/
RequestBody formBody1 = new FormBody.Builder()
.add("_method", "PUT")
.build();
RequestBody requestBody2 = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("image", file.getName(), RequestBody.create(MEDIA_TYPE.parse("image"), file))
.build();
Request request = new Request.Builder()
.url("http://ec2-35-161-195-128.us-west-2.compute.amazonaws.com/api/account")
.addHeader("Authorization", auth)
.put(formBody1)
.put(requestBody2)
.build();
client.newCall(request).enqueue(new okhttp3.Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
Toast.makeText(DetailActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {
response.body();
}
});
почтальон api image = https://i.imgur.com/AoCFZI6.png
Задача ещё не решена.
Других решений пока нет …