【发布时间】:2019-01-01 20:36:56
【问题描述】:
我正在尝试创建一个简单的应用程序,用于从服务器获取新消息列表。我使用Retrofit 库来解决以下任务。我已经阅读了几个代码源,写了一些问题,但我遇到了更多困难。首先,我将向您展示我的请求的当前结构。
服务器请求:
网址 https://my_server/v1/message/list
方法 获取
HTTP Header - Authorization:Bearer $access_token
网址参数 类型 0 - 对于收到的消息 1 - 用于发送的消息
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
接口代码
@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);
请求的类别
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;
}
留言回复
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;
}
但我仍然不知道如何将以下所有字段插入listview。在阅读了一些教程后,我创建了以下类,但我无法理解将我的字段分类为两个类的方法,而且我也不确定我的界面是否符合我的请求。也许你们当中有人知道我如何解决以下问题。
【问题讨论】:
-
将您的消息类放入 Call
- >。这将反映这种类型的响应,您可以简单地在 listView/RecyclerView 的适配器中使用它
-
谢谢,但我不明白如何在 mainactivity 类初始化以下接口,因为当我写 Call
- > listCall = mAPIService.getInMess(a ,公元前);我必须初始化所有需要界面中所有字段的变量。我必须给他们一些价值。是真的吗?
-
这些变量是调用你的api需要的参数。在此处粘贴 url 和 json 响应,以便更好地理解您的问题
-
我不能给你任何 url 和 json 响应,因为我现在不能用下面的代码做任何 GET 请求。
-
调用api时这些字段在api中是必需的吗...id、subject、candelete、new_m等还是响应?
标签: android get retrofit retrofit2