Код состояния 200, но данные все еще не загружаются на стороне сервера. ⇐ Android
-
Anonymous
Код состояния 200, но данные все еще не загружаются на стороне сервера.
В моем приложении для Android для страницы обновления профиля я использую API, и когда я вызываю API, ответ показывает успех, и я проверяю код состояния 200, но данные не загружаются в базу данных, с помощью Postman данные загружаются правильно, но с моего телефона данные не загружаются,
Раньше файл работал, а сегодня данные не добавляются, даже я не меняю ни одного слова или строки в коде.
API — это API публикации, и он использует данные формы для данных.
Ниже приведен мой код API
Класс обработчика API
import okhttp3.OkHttpClient; импортная модернизация2.Модернизация; импортировать Retrofit2.converter.gson.GsonConverterFactory; общественный класс ApiHandler { частная статическая окончательная строка BASE_URL = "https://rndtd.com/demos/scrapbazar/api/"; частная статическая модернизация; public static Retrofit getRetrofitInstance() { если (модернизация == ноль) { модификация = новый Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .строить(); } возвратная модернизация; } } Интерфейс для конечной точки API
публичный интерфейс ApiInterface { @GET("всепродукты") Call getAllProducts(); @Мультипартия @POST("обновление профиля") Вызов updateUserProfile( @Part("id") int id, @Part("first_name") Строка имя_пользователя, @Part("email") Строка электронной почты, @Part MultipartBody.Изображение детали ); } Метод вызова API
public void updateProfile() { ApiInterface apiInterface = getRetrofitInstance().create(ApiInterface.class); int id = SaveSharedPreference.getUserId (это); Строка userName = etUserName.getText().toString(); Строка электронной почты = etEmail.getText().toString(); if (userName.isEmpty() || email.isEmpty() || selectedImageUri == null) { мПрогресс.отклонить(); Toast.makeText(this, «Все поля обязательны», Toast.LENGTH_SHORT).show(); возвращаться; // Выходим из метода, если какое-либо поле отсутствует } если (selectedImageUri != null) { Строка fileName = getFileName(selectedImageUri); Файл imageFile = новый файл (getCacheDir (), имя файла); пытаться { InputStream inputStream = getContentResolver().openInputStream(selectedImageUri); FileOutputStream fileOutputStream = новый FileOutputStream (imageFile); буфер байт[] = новый байт[1024]; число байтовRead; while ((bytesRead = inputStream.read(buffer)) != -1) { fileOutputStream.write(буфер, 0, bytesRead); } inputStream.close(); fileOutputStream.close(); } поймать (IOException е) { е.printStackTrace(); } RequestBody imageRequestFile = RequestBody.create(MediaType.parse(getMimeType(selectedImageUri)), imageFile); MultipartBody.Часть изображенияЧасть = MultipartBody.Часть.createFormData("изображение", imageFile.getName(), imageRequestFile); Log.d("Данные запроса", "ID: " + id); Log.d("Запрос данных", "Имя пользователя: " + имя пользователя); Log.d("Данные запроса", "Электронная почта: " + адрес электронной почты); Log.d("Запросить данные", "изображение: " + imagePart); Call call = apiInterface.updateUserProfile(id, userName, email, imagePart); call.enqueue(new Callback() { @Override public void onResponse (вызов Call, ответ Response) { int responseCode = response.code(); Toast.makeText(EditProfile.this, "код: " + код ответа, Toast.LENGTH_SHORT).show(); если (response.isSuccessful()) { String msg = «Клиент успешно обновлен»; Toast.makeText(EditProfile.this, "" + msg, Toast.LENGTH_SHORT).show(); заканчивать(); } еще { мПрогресс.отклонить(); Toast.makeText(EditProfile.this, «Ответ не успешен», Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call call, Throwable t) { мПрогресс.отклонить(); Log.e("Тег", "Ошибка: " + t.getLocalizedMessage()); Toast.makeText(EditProfile.this, «Ошибка» + t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } }); } } Когда я проверяю logcat, данные отображаются правильно:
Мой логин в logcat:
Идентификатор: 2
Имя пользователя: мое имя
Электронная почта: myName@gmail.com
изображение: okhttp3.MultipartBody$Part@2afca0d
В моем приложении для Android для страницы обновления профиля я использую API, и когда я вызываю API, ответ показывает успех, и я проверяю код состояния 200, но данные не загружаются в базу данных, с помощью Postman данные загружаются правильно, но с моего телефона данные не загружаются,
Раньше файл работал, а сегодня данные не добавляются, даже я не меняю ни одного слова или строки в коде.
API — это API публикации, и он использует данные формы для данных.
Ниже приведен мой код API
Класс обработчика API
import okhttp3.OkHttpClient; импортная модернизация2.Модернизация; импортировать Retrofit2.converter.gson.GsonConverterFactory; общественный класс ApiHandler { частная статическая окончательная строка BASE_URL = "https://rndtd.com/demos/scrapbazar/api/"; частная статическая модернизация; public static Retrofit getRetrofitInstance() { если (модернизация == ноль) { модификация = новый Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .строить(); } возвратная модернизация; } } Интерфейс для конечной точки API
публичный интерфейс ApiInterface { @GET("всепродукты") Call getAllProducts(); @Мультипартия @POST("обновление профиля") Вызов updateUserProfile( @Part("id") int id, @Part("first_name") Строка имя_пользователя, @Part("email") Строка электронной почты, @Part MultipartBody.Изображение детали ); } Метод вызова API
public void updateProfile() { ApiInterface apiInterface = getRetrofitInstance().create(ApiInterface.class); int id = SaveSharedPreference.getUserId (это); Строка userName = etUserName.getText().toString(); Строка электронной почты = etEmail.getText().toString(); if (userName.isEmpty() || email.isEmpty() || selectedImageUri == null) { мПрогресс.отклонить(); Toast.makeText(this, «Все поля обязательны», Toast.LENGTH_SHORT).show(); возвращаться; // Выходим из метода, если какое-либо поле отсутствует } если (selectedImageUri != null) { Строка fileName = getFileName(selectedImageUri); Файл imageFile = новый файл (getCacheDir (), имя файла); пытаться { InputStream inputStream = getContentResolver().openInputStream(selectedImageUri); FileOutputStream fileOutputStream = новый FileOutputStream (imageFile); буфер байт[] = новый байт[1024]; число байтовRead; while ((bytesRead = inputStream.read(buffer)) != -1) { fileOutputStream.write(буфер, 0, bytesRead); } inputStream.close(); fileOutputStream.close(); } поймать (IOException е) { е.printStackTrace(); } RequestBody imageRequestFile = RequestBody.create(MediaType.parse(getMimeType(selectedImageUri)), imageFile); MultipartBody.Часть изображенияЧасть = MultipartBody.Часть.createFormData("изображение", imageFile.getName(), imageRequestFile); Log.d("Данные запроса", "ID: " + id); Log.d("Запрос данных", "Имя пользователя: " + имя пользователя); Log.d("Данные запроса", "Электронная почта: " + адрес электронной почты); Log.d("Запросить данные", "изображение: " + imagePart); Call call = apiInterface.updateUserProfile(id, userName, email, imagePart); call.enqueue(new Callback() { @Override public void onResponse (вызов Call, ответ Response) { int responseCode = response.code(); Toast.makeText(EditProfile.this, "код: " + код ответа, Toast.LENGTH_SHORT).show(); если (response.isSuccessful()) { String msg = «Клиент успешно обновлен»; Toast.makeText(EditProfile.this, "" + msg, Toast.LENGTH_SHORT).show(); заканчивать(); } еще { мПрогресс.отклонить(); Toast.makeText(EditProfile.this, «Ответ не успешен», Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call call, Throwable t) { мПрогресс.отклонить(); Log.e("Тег", "Ошибка: " + t.getLocalizedMessage()); Toast.makeText(EditProfile.this, «Ошибка» + t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } }); } } Когда я проверяю logcat, данные отображаются правильно:
Мой логин в logcat:
Идентификатор: 2
Имя пользователя: мое имя
Электронная почта: myName@gmail.com
изображение: okhttp3.MultipartBody$Part@2afca0d
Мобильная версия