2016-12-15 2 views
0

У меня проблема с модифицированным POST-запросом. Я пытаюсь отправить Object с несколькими полями и массивом внутри. Я читал, что лучшим решением является это с помощью @Body. Однако сервер возвращает ошибку - отправляется пустой проект. Это мой пост метод:Модификация @Body POST

@POST("/api/mobile/{language}/{apiVersion}/beacons/try-save-settings") 
    void trySaveBeaconParams(
      @Body EonBeaconModel model, 

      Callback<BasicResponse<Object>> callback); 

Это мой EonBeaconModel.class:

@Table(name = "eonBeacon") 
public class EonBeaconModel extends Model { 
    @Column(unique = true, onUniqueConflict = Column.ConflictAction.REPLACE, index = true) 
    public long beacon_id; 
    @Column 
    public long bridge_id; 
    @Column 
    public long mesh_id; 
    @Column 
    public String name; 
    @Column 
    public String location; 
    @Column 
    public String mac_address; 
    @Column 
    public String firmware; 
    @Column 
    public String pcb_revision; 
    @Column 
    public int battery_level; 
    @Column 
    public String password; 
    @Column 
    public String assigned_bridge_id; 

    @Column(name="Eeid") 
    public Eeid eeid; 
    @Column(name="Etlm") 
    public Etlm etlm; 
    @Column 
    public Euid euid; 
    @Column(name="Eurl") 
    public Eurl eurl; 
    @Column(name="Ib") 
    public IbModel ibBeaconModel; 
    @Column 
    public String jsonIB; 
    @Column 
    public String jsonEeid; 
    @Column 
    public String jsonEtlm; 
    @Column 
    public String jsonEuid; 
    @Column 
    public String jsonEurl; 
    @Column 
    public boolean isBeacon; 
    @Column(name="sleep_modes") 
    public List<SleepMode> sleep_modes; 
    @Column 
    public String jsonSleep; 

это, как я создаю Callback:

@Subscribe 
    public void validateNewBeaconData(ValidateNewBeaconDataCommand command) { 
     Callback<BasicResponse<Object>> callback = new Callback<BasicResponse<Object>>() { 
      @Override 
      public void success(BasicResponse<Object> basicResponse, Response response) { 
       if (ResponseStatus.SUCCESS.statusCode == basicResponse.status) { 
        EventBus.post(new BeaconsSettingsValidatedEvent()); 
        Log.e(TAG, "success: "); 
       } 
       else { 
        EventBus.post(new NetworkFailureEvent(ResponseStatus.getByStatus(basicResponse.status), basicResponse.status_msg)); 
        Log.e(TAG, "failure validate: "); 

       } 
      } 

      @Override 
      public void failure(RetrofitError error) { 
       EventBus.post(new NetworkFailureEvent(ResponseStatus.NETWORK_ERROR, messageString)); 
       Log.e(TAG, "failure: " + error.getCause()); 

      } 
     }; 
     Log.e(TAG, "validateNewBeaconData: " + command.model.eurl.interval); 
     service.trySaveBeaconParams(command.model 
       , 
      callback); 


    } 

И это моя команда класс:

public class ValidateNewBeaconDataCommand extends ApiCommand { 
    public EonBeaconModel model; 


    public ValidateNewBeaconDataCommand(EonBeaconModel model) { 

     this.model=model; 
    } 
} 

Я проверил его при отладке и когда Callback называется командой не null - он имеет все поля из объекта EonBeaconModel. Единственная проблема заключается в отправке его на сервер. Любая помощь, пожалуйста?

POST должен выглядеть следующим образом:

enter image description here

+0

проверить URL '{язык}/{apiVersion } 'use @path, чтобы заполнить эти 2 значения – sushildlh

+0

URL-адрес верен. – Bartos

+0

Вы проверили URL-адрес, используя 'POSTMAN' ?? – sushildlh

ответ

0

Попробуйте добавить косую черту в конце POST Url, как:

@POST("/api/mobile/{language}/{apiVersion}/beacons/try-save-settings/") 
+0

Нет, это не то: / – Bartos