2014-11-19 5 views
2

Я использую Retrofit для отправки данных формы и получения обратно XML. То, что я до сих пор прекрасно работает, но хочу внести некоторые изменения. Вот мой существующий код (и это работает):Android-модификация, сериализация параметров POST

Вот мой интерфейс

public interface SignupUser 
{ 
     @FormUrlEncoded 
     @POST("/createaccount.cfm") 
     SignupServerResponse signup(@Field("e") String email, @Field("p") String password); 
} 

Вот код для вызова API (опять же, это работает отлично, я объясню ниже того, что я хочу изменить)

SignUpDetails mDeets; // this gets initialize and set somewhere else 


RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://myurl.com") 
      .setConverter(new SimpleXMLConverter()).build(); // the response is xml, that works fine 

SignupUser service = restAdapter.create(SignupUser.class); 

SignupServerResponse res = service.signup(mDeets.getE(), mDeets.getP()); 

Как я могу сделать это так, что я могу передать в SignUpDetails объект прямо на Signup() метод вместо прохождения в отдельных строках? Когда я изменить конструктор регистрации(), чтобы принять SignUpdetails объект (см ниже) и передать мое SignUpDetails объекту, я получаю сообщение об ошибке сказав

Нет дооснащение Аннотация Найдено

Вот как я бы хотел бы определить интерфейс

public interface SignupUser 
{ 
     @FormUrlEncoded 
     @POST("/createaccount.cfm") 
     SignupServerResponse signup(SignUpDetails deets); 
} 

И называть это так (вместо прохождения всех этих параметров)

SignupServerResponse res = service.signup(mDeets); 

Я попытался добавить @Field над каждым из моих переменных в классе SignUpDetails и что не работает либо (ошибка компиляции)

+0

Вы нашли решение этой проблемы? Я сталкиваюсь с тем же. –

ответ

-1

На вашем использовании интерфейса @body аннотации для параметра deets:

@POST("/createaccount.cfm") 
SignupServerResponse signup(@Body SignUpDetails deets); 

Это должен преобразовать SignUpDetails в XML (поскольку вы используете xml-конвертер на своем адаптере). Именно тогда вы должны проанализировать тело запроса XML на сервере.

+0

Я не хочу преобразовать объект SignUpDetails (post params) в xml, я отправляю данные формы. (его ответ сервера, который является mxl, который отлично работает) – brux

Смежные вопросы