Не могу понять, в чем ошибка. Путем дебаггинга понял, что в итоге body = null.
{
"RequestId":"13fb3f4b-d801-4c3c-a9e5-908757678074",
"TimeStamp":"2011-09-09T23:31:53.102Z",
"Status":"PNE",
"Errors":null,
"EndTimestamp":"2011-09-09T23:31:53.102Z",
"Build":"9.1.6.10",
"ChannelLineup":{
"ServiceId":20494,
"Name":"Los Angeles Area Channels - Los Angeles Area Broadcast",
"City":"Los Angeles",
"Type":"Broadcast",
"MSO":"Data Services Product",
"MSOID":"301530",
"TimeZones":[
{
"StartDateTime":"2011-03-13T10:00:00Z",
"EndDateTime":"2011-11-06T09:00:00Z",
"Offset":-420
}
],
"Channels":[
{
"SourceId":11110,
"Channel":"2.1",
"CallLetters":"KCBSHD",
"DisplayName":"KCBSHD",
"SourceType":"Broadcast",
"Type":"24-Hours",
"Order":1,
"TiVoSupported":true,
"ParentNetworkId":2,
"IconAvailable":true,
"FullName":"KCBS HDTV",
"VirtualChannelNumber":"2.1",
"Affiliation":2165,
"ServiceType":"Digital",
"SourceAttributes":"1",
"ChannelSchedules":null,
"SourceAttributeTypes":[
"HD"
],
"ChannelLocation":"",
"DvbTriplets":null
},
{
"SourceId":11287,
"Channel":"4.1",
"CallLetters":"KNBCHD",
"DisplayName":"KNBCHD",
"SourceType":"Broadcast",
"Type":"24-Hours",
"Order":2,
"TiVoSupported":true,
"ParentNetworkId":5,
"IconAvailable":true,
"FullName":"KNBC HDTV",
"VirtualChannelNumber":"4.1",
"Affiliation":1209,
"ServiceType":"Digital",
"SourceAttributes":"1",
"ChannelSchedules":null,
"SourceAttributeTypes":[
"HD"
],
"ChannelLocation":"",
"DvbTriplets":null
}
]
}
}
Класс Main
public class Main {
private static final String API_URL = "http://api.rovicorp.com";
private static final String API_KEY = "dekq58hngayqn3jtdb4q4qnw";
public static void main(String[] args) throws IOException {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RovicorpApi rovicorpApi = retrofit.create(RovicorpApi.class);
Call<ServiceDetailsResult> call = rovicorpApi.getData("en-US", false, API_KEY);
ServiceDetailsResult result = call.execute().body();
if(result != null) {
List<Channel> channels = result.getChannelLineup().getChannels();
for (Channel channel : channels) {
System.out.println(channel.getFullName());
}
}
else System.out.println("Error!");
}
}
Класс Channel
public class Channel {
@SerializedName("SourceId")
@Expose
private Integer sourceId;
@SerializedName("Channel")
@Expose
private String channel;
@SerializedName("CallLetters")
@Expose
private String callLetters;
@SerializedName("DisplayName")
@Expose
private String displayName;
@SerializedName("SourceType")
@Expose
private String sourceType;
@SerializedName("Type")
@Expose
private String type;
@SerializedName("Order")
@Expose
private Integer order;
@SerializedName("TiVoSupported")
@Expose
private Boolean tiVoSupported;
@SerializedName("ParentNetworkId")
@Expose
private Integer parentNetworkId;
@SerializedName("IconAvailable")
@Expose
private Boolean iconAvailable;
@SerializedName("FullName")
@Expose
private String fullName;
@SerializedName("VirtualChannelNumber")
@Expose
private String virtualChannelNumber;
@SerializedName("Affiliation")
@Expose
private Integer affiliation;
@SerializedName("ServiceType")
@Expose
private String serviceType;
@SerializedName("SourceAttributes")
@Expose
private String sourceAttributes;
@SerializedName("ChannelSchedules")
@Expose
private Object channelSchedules;
@SerializedName("SourceAttributeTypes")
@Expose
private List<String> sourceAttributeTypes = null;
@SerializedName("ChannelLocation")
@Expose
private String channelLocation;
@SerializedName("DvbTriplets")
@Expose
private Object dvbTriplets;
/* getters and setters */
}
Класс ChannelLineup
public class ChannelLineup {
@SerializedName("ServiceId")
@Expose
private Integer serviceId;
@SerializedName("Name")
@Expose
private String name;
@SerializedName("City")
@Expose
private String city;
@SerializedName("Type")
@Expose
private String type;
@SerializedName("MSO")
@Expose
private String mSO;
@SerializedName("MSOID")
@Expose
private String mSOID;
@SerializedName("TimeZones")
@Expose
private List<TimeZone> timeZones = null;
@SerializedName("Channels")
@Expose
private List<Channel> channels;
/* getters and setters */
}
Интерфейс RovicorpApi
public interface RovicorpApi {
@Headers("X-Originating-Ip: 212.92.190.116")
@GET("/TVlistings/v9/listings/servicedetails/serviceid/20494/info")
Call<ServiceDetailsResult> getData(@Query("locale") String locale,
@Query("includechannelimages") boolean channelImages,
@Query("apikey") String apikey);
}
Класс ServiceDetailsResult
public class ServiceDetailsResult {
@SerializedName("RequestId")
@Expose
private String requestId;
@SerializedName("TimeStamp")
@Expose
private String timeStamp;
@SerializedName("Status")
@Expose
private String status;
@SerializedName("Errors")
@Expose
private Object errors;
@SerializedName("EndTimestamp")
@Expose
private String endTimestamp;
@SerializedName("Build")
@Expose
private String build;
@SerializedName("ChannelLineup")
@Expose
private ChannelLineup channelLineup;
/* getters and setters */
public void setChannelLineup(ChannelLineup channelLineup) {
this.channelLineup = channelLineup;
}
public ServiceDetailsResult withChannelLineup(ChannelLineup channelLineup) {
this.channelLineup = channelLineup;
return this;
}
Класс TimeZone
public class TimeZone {
@SerializedName("StartDateTime")
@Expose
private String startDateTime;
@SerializedName("EndDateTime")
@Expose
private String endDateTime;
@SerializedName("Offset")
@Expose
private Integer offset;
/* getters and setters */
}
Проверь код ответа в response который возвращается при вызове call.execute(). И потом уже вытягивай body. Возможно при запросе происходит ошибка и поэтому body == null.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скажите, пожалуйста, в чем ошибка? После отработки кода resultMap хранит всего одно значение с первой нити, почему не добавляются значения с других...
Подскажите пожалуйста где в Retofit можно посмотреть url запроса, с ключами, обязательными параметрами и тп
Если я приостанавливаю поток при помощи методов sleep() или wait(), флаг isInterrupted() в этот момент меняется или нет?
Я создал определенный view элемент, код ниже: