简体   繁体   中英

Which structure of project for GET request retrofit android I have to create?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM