Как отправить данные с помощью retrofit2, когда я выбрал данные формы в POSTMAN

Когда я использовал для публикации данных через 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. как использовать здесь данные формы в виде кодированной формы. Или требуются изменения в моем почтальоне

Почтальон Когда это удачно, я выбрал данные формы Как отправить данные с помощью retrofit2, когда я выбрал данные формы в POSTMAN

почтальон, когда я выбрал кодировку формы Как отправить данные с помощью retrofit2, когда я выбрал данные формы в POSTMAN

При чем здесь JavaScript ??

Jack Bashford 17.12.2018 06:57

может быть какая-то ошибка на твоем бэкхэнде?

sushildlh 17.12.2018 07:04

просто удалите аннотацию FormDataUrl, она все равно будет работать. form-data в Postman предназначен для отправки данных в виде данных многостраничной формы, и я думаю, что это не как @FormUrlEncoded. Можете ли вы опубликовать свой бэкэнд-код API.

Jay Dangar 17.12.2018 07:04

Вы пробовали установить тип содержимого application/x-www-form-urlencoded в почтальоне?

Kishore Jethava 17.12.2018 07:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
425
1

Ответы 1

Отредактируйте свой метод интерфейса следующим образом

@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 можно использовать только с составной кодировкой. Я получаю эту ошибку

Yashwanth Reddy 17.12.2018 08:13

Если я использую @Multipart в интерфейсе, я получаю ответ 500

Yashwanth Reddy 17.12.2018 08:16

можешь добавить обновленный код, будет полезнее @Yas

nishant 17.12.2018 09:10

Другие вопросы по теме