I am trying to create a simple application for getting a list of new messages from a server. I use Retrofit
library for solving the following task. I have already read several sources of code, written some questions but I have some more difficulties. Firstly, I will show you the current structure of my request.
server request:
URL https://my_server/v1/message/list
Method GET
HTTP Header - Authorization:Bearer $access_token
URL Params type 0 - for received messages 1 - for sent messages
Success Response
HTTP 200
{
"count": int, # number of messages
"messages": [ # array of messages
{
"id": int, # message id
"subject": str, # message subject
"can_delete": int, # can it be deleted (1) or not (0)
"new": int # message already read (0) or not (1)
"date": str, # date of message in 'd.m.y'. If message was sent today format will be 'H:M'
"receiver_name": str, # name of receiver if type=1
"sender_name": str, # name of sender if type=0
}, ...
],
"next_url": URL, # url for get next messages, if no more messages value is null
"previous_url": URL # url for get previous messages, if no more messages value is null
}
Sample Call
curl -i -X GET -H "Content-Type:application/json" -H "Authorization:Bearer $ACCESS_TOKEN" https://server/v1/message/list?type=TYPE
interface code
@Headers({
"Content-type: application/json",
"Authorization: Bearer $ACCESS_TOKEN"})
@GET("/v1/message/list?type=TYPE")
Call<List<NewMessAnswer>> getInMess(@Query("id") Integer id,
@Query("subject") String subject,
@Query("can_delete") Integer can_delete,
@Query("new") Integer new_m,
@Query("date") String date,
@Query("receiver_name") String receiver_name,
@Query("sender_name") String sender_name,
@Query("next_url") URL next_url,
@Query("previous_url") URL previous_url);
classes of request
public class Message {
@SerializedName("id")
int id;
@SerializedName("subject")
String subject;
@SerializedName("can_delete")
int isCanDelete;
@SerializedName("new")
int isNew;
@SerializedName("date")
String date;
@SerializedName("receiver_name")
String receiverName;
@SerializedName("sender_name")
String senderName;
}
Message Answer
import com.google.gson.annotations.SerializedName;
import java.net.URL;
import java.util.List;
public class MessageAnswer {
@SerializedName("count")
int count;
@SerializedName("messages")
List<Message> messages;
@SerializedName("next_url")
URL nextUrl;
@SerializedName("previous_url")
URL previousUrl;
}
but I still don't know how to insert all the following fields into listview
. After reading some tutorial I have created the following classes but I can't understand a way of sorting my fields into two classes and I'm also not sure in my interface for my request. Maybe somebody of you knows how I can solve the following problem.
Retrofit Interface
@Headers({"Content-type: application/json"})
@GET("/v1/message")
Call<MessageResponse> getInMess(@Header("Authorization") String authorization, @Query("type") Integer type);
MessageResponse
import java.util.List;
public class MessageResponse {
private Integer count;
private List<Message> messages = null;
private String next_url;
private String previous_url;
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public List<Message> getMessages() {
return messages;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
public String getNext_url() {
return next_url;
}
public void setNext_url(String next_url) {
this.next_url = next_url;
}
public String getPrevious_url() {
return previous_url;
}
public void setPrevious_url(String previous_url) {
this.previous_url = previous_url;
}
}
Message
public class Message {
private Integer id;
private String subject;
private Integer can_delete;
private Integer _new;
private String date;
private String receiver_name;
private String sender_name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public Integer getCan_delete() {
return can_delete;
}
public void setCan_delete(Integer can_delete) {
this.can_delete = can_delete;
}
public Integer getNew() {
return _new;
}
public void setNew(Integer _new) {
this._new = _new;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getReceiver_name() {
return receiver_name;
}
public void setReceiver_name(String receiver_name) {
this.receiver_name = receiver_name;
}
public String getSender_name() {
return sender_name;
}
public void setSender_name(String sender_name) {
this.sender_name = sender_name;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.