Как отправить сообщение Объект с модификацией 2 - PullRequest
0 голосов
/ 30 января 2019

У меня проблемы с отправкой почтового запроса в мой API.мне нужно отправить данные в такой форме

userinfo:{  
   Name="sample",
   Company="sample",
   Contact="Contact"
},
Password="",
PasswordConfirm="",
TokenStr=""
}

Нужно ли использовать аннотацию @Body для отправки моего запроса?Вот мой пример кода (обновлено)

ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
        User userReg = new User("asd","asd","bryce@email.com","asd",
                "asd","asd","asd","1");
        UserRegistration sendReg = new UserRegistration(userReg,"asd","asd",
                token);
        final Call<UserRegistration> tableCall = apiService.getUserRegistration(sendReg);
        tableCall.enqueue(new Callback<UserRegistration>() {
            @Override
            public void onResponse(Call<UserRegistration> call, Response<UserRegistration> response) {
                int statusCode = response.code();
                if (response.isSuccessful()){
                    Log.e("asdasd",response.body().toString());
                }else{
                    Log.e("asdas",response.message());
                }
            }

            @Override
            public void onFailure(Call<UserRegistration> call, Throwable t) {
                t.printStackTrace();
                Log.e("ERROR",""+t.getMessage()+" "+t.getLocalizedMessage());
                Toast.makeText(getApplicationContext(), ""+t.toString(), Toast.LENGTH_LONG).show();
            }
        });

, а вот мой ApiInterface (обновлено)

@POST("UserRegistration")
    @FormUrlEncoded
    Call<UserRegistration> getUserRegistration(@Body UserRegistration userRegistration);

Я добавил класс модели

public class UserRegistration {

    User items;
    String Password;
    String PasswordConfirm;
    String TokenStr;

    public UserRegistration(User items, String password, String passwordConfirm, String tokenStr) {
        this.items = items;
        Password = password;
        PasswordConfirm = passwordConfirm;
        TokenStr = tokenStr;
    }
}

public class User {

    private String COMPANY;
    private String CONTACT_NO;
    private String EMAIL;
    private String FNAME;
    private String LNAME;
    private String MI;
    private String POSITION;
    private String RID;

    public User(String COMPANY, String CONTACT_NO, String EMAIL, String FNAME, String LNAME, String MI, String POSITION, String RID) {
        this.COMPANY = COMPANY;
        this.CONTACT_NO = CONTACT_NO;
        this.EMAIL = EMAIL;
        this.FNAME = FNAME;
        this.LNAME = LNAME;
        this.MI = MI;
        this.POSITION = POSITION;
        this.RID = RID;
    }
}

Теперь я получаю сообщение об ошибке, говорящее о том, что параметры @Body нельзя использовать с кодированием формы или нескольких частей.(параметр # 1).

Но я получил неверный запрос.я знаю, что моя просьба неверна.и я новичок в Android.Я пытался выяснить, как это сделать, но не нашел полезных ответов.

Ответы [ 2 ]

0 голосов
/ 30 января 2019
  1. Вы можете использовать @Body следующим образом:
  2. @ POST Call getUserRegistration (@Body Userinfo userinfo);
  3. Создать модель для вашего json и передать ее в качестве параметра.
0 голосов
/ 30 января 2019
  1. JSON, который вы указали, немного не прав, исправьте его

  2. Создайте POJO в соответствии с вашим JSON

  3. Измените getUserRegistration() In ApiInterface на

@ POST ("учетная запись / проверка")

Регистр вызовов (@Body RegisterRequest registerRequest)

Вы можете обратиться к этой статье: https://futurestud.io/tutorials/retrofit-send-objects-in-request-body

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...