我使用Retrofit 2从api获取JSON数据。但是当我运行应用程序时,它显示错误
java.lang.IllegalArgumentException: URL "user/get_notifications" does not contain "{userid}".
我的代码中没有使用userid
,也不知道如何删除错误。
这是我的代码:
public class noti_sec{
@SerializedName("id")
String id;
@SerializedName("type")
String type;
@SerializedName("text")
String noti_msg;
@SerializedName("for_userid")
String for_userid;
@SerializedName("from_userid")
String from_userid;
@SerializedName("for_image")
String for_image;
@SerializedName("seen")
String seen;
@SerializedName("username")
String username;
@SerializedName("firstname")
String firstname;
@SerializedName("lastname")
String lastname;
@SerializedName("imgname")
String imgname;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getNoti_msg() {
return noti_msg;
}
public void setNoti_msg(String noti_msg) {
this.noti_msg = noti_msg;
}
public String getFor_userid() {
return for_userid;
}
public void setFor_userid(String for_userid) {
this.for_userid = for_userid;
}
public String getFrom_userid() {
return from_userid;
}
public void setFrom_userid(String from_userid) {
this.from_userid = from_userid;
}
public String getFor_image() {
return for_image;
}
public void setFor_image(String for_image) {
this.for_image = for_image;
}
public String getSeen() {
return seen;
}
public void setSeen(String seen) {
this.seen = seen;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getImgname() {
return imgname;
}
public void setImgname(String imgname) {
this.imgname = imgname;
}
}
其他人:
public class full_noti_sec {
@SerializedName("status")
String status;
@SerializedName("message")
String message;
@SerializedName("data")
private List<noti_sec> data;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<noti_sec> getData() {
return data;
}
public void setData(List<noti_sec> data) {
this.data = data;
}
}
和界面一:
public interface notiIterface {
@GET("user/get_notifications")
Call<full_noti_sec> getNotification(@Path("userid") String userid, @Path("session") String session);
}
答案 0 :(得分:3)
修改强>
从端点网址http://chikoop.com/api/index.php/user/get_notifications/看起来像
userid
字段sessionid
某种方式,可能在请求正文,授权标题等中。但不是@Path
方法中的getNotification()
。请参阅相应的API文档。
仔细检查您正在学习/参考改造的来源。
public interface notiIterface {
@GET("user/get_notifications")
Call<full_noti_sec> getNotification(@Path("userid") String userid, @Path("session") String session);
}
显然,在getNotifications
方法中,您引用了userid
和session
@Path
个变量,但您的GET方法的端点不包含这些变量。
注意:我只是假设,如果有效,它可能看起来像这样:
@GET("{session}/user/{userid}/get_notifications")
答案 1 :(得分:1)
如果您还没有在界面中描述带有空路径参数的方法签名(而只是请求参数),那么它会发现您的HTTP调用应始终采用&#34; / user / get_notifications /的格式{用户ID} / {会话}&#34 ;.您是否使用HTTP GET尝试使用该URL