java.lang.IllegalArgumentException:URL“user / get_notifications”不包含“{userid}”

时间:2017-02-25 13:49:56

标签: android json retrofit2

我使用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);
}

2 个答案:

答案 0 :(得分:3)

修改

从端点网址http://chikoop.com/api/index.php/user/get_notifications/看起来像

  1. 不期待userid字段
  2. 期待sessionid某种方式,可能在请求正文,授权标题等中。但不是@Path方法中的getNotification()
  3. 请参阅相应的API文档。

    仔细检查您正在学习/参考改造的来源。

    public interface notiIterface {
        @GET("user/get_notifications")
        Call<full_noti_sec> getNotification(@Path("userid") String userid, @Path("session") String session);
    }
    

    显然,在getNotifications方法中,您引用了useridsession @Path个变量,但您的GET方法的端点不包含这些变量。

    注意:我只是假设,如果有效,它可能看起来像这样:

    @GET("{session}/user/{userid}/get_notifications")
    

答案 1 :(得分:1)

如果您还没有在界面中描述带有空路径参数的方法签名(而只是请求参数),那么它会发现您的HTTP调用应始终采用&#34; / user / get_notifications /的格式{用户ID} / {会话}&#34 ;.您是否使用HTTP GET尝试使用该URL