POSTリクエストの改造に問題があります。私はいくつかのフィールドを持つオブジェクトを送信しようとすると、内部の配列。私は、最高の解決策は@Bodyを使って行うことだと読んでいます。しかし、サーバーはエラーを返します - nullプロジェクトが送信されています。この私のポスト方法である:これは私のEonBeaconModel.classあるRetrofit @Body POST
@POST("/api/mobile/{language}/{apiVersion}/beacons/try-save-settings")
void trySaveBeaconParams(
@Body EonBeaconModel model,
Callback<BasicResponse<Object>> callback);
:
@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;
これは私がコールバックを作成する方法である:
@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);
}
そして、これが私のCommandクラスです:
public class ValidateNewBeaconDataCommand extends ApiCommand {
public EonBeaconModel model;
public ValidateNewBeaconDataCommand(EonBeaconModel model) {
this.model=model;
}
}
デバッグ時にチェックしましたコールバックが呼び出されているときにcommandがnullでない - EonBeaconModelオブジェクトのすべてのフィールドを持ちます。唯一の問題はサーバーに送信することです。助けてください?
POSTは次のようになります。
あなたのURL '{言語}/{apiVersionをチェック} 'これらの2つの値を埋めるために@pathを使用します。 – sushildlh
URLは正しいです。 – Bartos
あなたは 'POSTMAN'を使ってURLをチェックしましたか? – sushildlh