Когда я использовал для публикации данных через Api с использованием модернизации, я получаю ответ 400, когда я использовал @FormUrlEncoded в своем интерфейсе, но в почтальоне я использовал данные формы для публикации, можете ли вы помочь мне
Вот мой интерфейс
public interface SignupApiService {
@POST("users")
@FormUrlEncoded
Call<ResponseBody> savePost(@Field("email") String email,
@Field("password") String password,
@Field("role") int role);
}
Вот моя активность в регистрации
Call<ResponseBody> call = SignupClient
.getInstance().getApi()
.savePost(email, password, roleValue);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
int statusCode = response.code();
progressBar.setVisibility(View.GONE);
Log.d("SignupActivity", "onResponse" +statusCode);
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(SignupActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Вот мой класс Java
public class SignupClient {
private static SignupClient mInstance;
private static Retrofit retrofit;
private static final String BASE_URL = "http://74.207.233.160/api/v1/";
private SignupClient(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static synchronized SignupClient getInstance() {
if (mInstance == null){
mInstance = new SignupClient();
}
return mInstance;
}
public SignupApiService getApi() {
return retrofit.create(SignupApiService.class);
}
}
Здесь, когда я использую formurlencoded, я получаю ответ 400. как использовать здесь данные формы в виде кодированной формы. Или требуются изменения в моем почтальоне
может быть какая-то ошибка на твоем бэкхэнде?
просто удалите аннотацию FormDataUrl, она все равно будет работать. form-data в Postman предназначен для отправки данных в виде данных многостраничной формы, и я думаю, что это не как @FormUrlEncoded. Можете ли вы опубликовать свой бэкэнд-код API.
Вы пробовали установить тип содержимого application/x-www-form-urlencoded в почтальоне?




Отредактируйте свой метод интерфейса следующим образом
@POST("users")
Call<ResponseBody> savePost(@PartMap() Map<String, RequestBody> map);
и где вы вызываете этот метод
Map<String, RequestBody> map = new HashMap<>();
map.put("user[email]", RequestBody.create(MultipartBody.FORM,email))
# same way add password and other params
and call the interface method by passing this map
Параметры @PartMap можно использовать только с составной кодировкой. Я получаю эту ошибку
Если я использую @Multipart в интерфейсе, я получаю ответ 500
можешь добавить обновленный код, будет полезнее @Yas
При чем здесь JavaScript ??