Я пытаюсь прочитать приведенный ниже XML документ с ответами, используя Retrofit 2.7.1 и Retrofit SimpleXMLConverter 2.3.0:
<Schedule xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Viptech">
<Entries>
<ScheduleEntry>
<Arrival>2020-01-05T22:33:00</Arrival>
<CutOff i:nil="true"/>
<Departure>2020-01-07T10:33:00</Departure>
<Port>Cotonou</Port>
<Vessel>Viking Coral</Vessel>
<Voyage>19VO02</Voyage>
</ScheduleEntry>
<ScheduleEntry>
<Arrival>2020-02-08T22:16:00</Arrival>
<CutOff i:nil="true"/>
<Departure>2020-02-09T10:16:00</Departure>
<Port>Cotonou</Port>
<Vessel>Glovis Supreme</Vessel>
<Voyage>20GZ01</Voyage>
</ScheduleEntry>
<ScheduleEntry>
<Arrival>2020-02-28T00:00:00</Arrival>
<CutOff i:nil="true"/>
<Departure>2020-02-28T12:00:00</Departure>
<Port>Cotonou</Port>
<Vessel>Glovis Solomon</Vessel>
<Voyage>20MM01</Voyage>
</ScheduleEntry>
<ScheduleEntry>
<Arrival>2020-03-06T10:59:00</Arrival>
<CutOff i:nil="true"/>
<Departure>2020-03-06T22:59:00</Departure>
<Port>Cotonou</Port>
<Vessel>Grand Duke</Vessel>
<Voyage>20GD01</Voyage>
</ScheduleEntry>
<ScheduleEntry>
<Arrival>2020-03-19T06:14:24</Arrival>
<CutOff i:nil="true"/>
<Departure>2020-03-20T06:14:00</Departure>
<Port>Cotonou</Port>
<Vessel>Glovis Symphony</Vessel>
<Voyage>20EV01</Voyage>
</ScheduleEntry>
</Entries>
</Schedule>
Используя этот VesselApiService Класс:
interface VesselApiService {
@Headers("Accept: application/xml")
@GET("schedule")
fun getTestData(@Query("pod") city: String): Call<Entries?>?
}
С моделью Записи :
@Root
public class Entries {
public List<ScheduleEntry> getScheduleEntry() {
return scheduleEntry;
}
public void setScheduleEntry(List<ScheduleEntry> scheduleEntry) {
this.scheduleEntry = scheduleEntry;
}
@ElementList
public List<ScheduleEntry> scheduleEntry;
@Root
static public class ScheduleEntry {
@Element
public String arrival;
@Element
public Boolean cutOff;
@Element
public String departure;
@Element
public String port;
@Element
public String vessel;
@Element
public String voyage;
}
}
Объект дооснащения здания NetworkClient как показано ниже:
object NetworkClient {
const val BASE_URL = "https://app.domain.io/api/voyage/"
var retrofit: Retrofit? = null
val retrofitClient: Retrofit?
get() {
if (retrofit == null) {
retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(SimpleXmlConverterFactory.createNonStrict(Persister()))
.build()
}
return retrofit
}
}
Запуск этого возврата ответ HTTP 200, но тело ответа всегда пустое. Уже не могу понять, что я делаю неправильно.
Я уже пытался добавить аннотацию @ ElementList , но выдает следующую ошибку:
java .lang.RuntimeException: org.simpleframework. xml .core.MethodException: Аннотация @ org.simpleframework. xml .ElementList (data = false, пусто = true, entry =, inline = true, name = entry, обязательно = true, type = void) должен пометить метод set или get