Поля публикации в этом формате с помощью Retrofit

Поэтому мне нужно отправить запрос API в этом формате

{ "access_key": "6477848488cchfc47488", "person": { "first_name": "Джон", "last_name": "Генри", "email": "[email protected]" } }

Я создал объект

public class Person {
    public String first_name = "";
    public String last_name = "";
    public String email = "";
}

В моем интерфейсе у меня есть

@FormUrlEncoded
@POST("/send_details")
void sendDetails(@Field("person") Person person, @Field("access_key") String accessKey, Callback<User> cb);

Наконец, в моей деятельности у меня есть приведенный ниже код для вызова метода отправки сведений.

Person person = new Person("John", ":"Henry, "[email protected]");
  aApi.sendDetails(person, ACCESS_KEY, new Callback<User>() {
     @Override
        public void success(User user, Response response) {

        }

        @Override
        public void failure(RetrofitError error) {

        }
    });
  }

Я получаю 500 Internal Server Error. Я только что перешел с залпа на модернизацию. Был бы признателен за любую помощь.


person Amanni    schedule 21.05.2015    source источник


Ответы (1)


Попробуйте использовать аннотацию @Body вместо @Field и передать один объект Body.

class DetailsBody {
    @SerializedName("access_key")
    public String accessKey;
    public Person person;

    public DetailsBody(String accessKey, Person person) {
        this.accessKey = accessKey;
        this.person = person;
    }
}

а потом:

@POST("/send_details")
void sendDetails(@Body DetailsBody body, Callback<User> cb);

(без @FormUrlEncoded)

person Bartek Lipinski    schedule 21.05.2015