【问题标题】:Send List to server with retrofit:2.1.0 - Android?使用改造:2.1.0 将列表发送到服务器 - Android?
【发布时间】:2017-02-12 11:52:51
【问题描述】:

我有一个ClassSchedule

public class ClassSchedule {
    private String Day;
    private String Time;

    public String getDay() {
        return Day;
    }

    public void setDay(String day) {
        Day = day;
    }

    public String getTime() {
        return Time;
    }

    public void setTime(String time) {
        Time = time;
    }
}

我设置的数据如下:

List<ClassSchedule> listSchedule = new ArrayList<>();
ClassSchedule classSchedule = new ClassSchedule();
classSchedule.setDay(weekDay);
classSchedule.setTime(startTime);
listSchedule.add(classSchedule);

如何使用retrofit:2.1.0listSchedule 发送到服务器?

其他参数:

    Classes classesme = new Classes();
    classesme.setName(name);
    classesme.setCost(cost);
    classesme.setType(String.valueOf(spCost));
    classesme.setClass_Type(spClass);
    classesme.setProvince(nameState);
    classesme.setCity(city);
    classesme.setField_Name(field);
    classesme.setSection(section);
    classesme.setTerm(term);
    classesme.setYear(year);
    classesme.setAccess_Type(access);
    classesme.setUniversity_Name(nameUn);
    classesme.setDescription(desc);
    classesme.setDayStart(startDate);
    classesme.setDayEnd(endDate);

并且: 字符串用户名 = "吉姆";

在我的interface 中是:

public interface Interface_CreateClass {
    @POST("SetData/CreateClass")
    Call<JsonGet_CreateClass> getJSONCreateClass(@Query("username") String username,
                                                 @Body Classes classes,
                                                 @Body ClassSchedule classSchedule);
}

【问题讨论】:

  • 您可以将其转换为 json,然后将其与服务器通信
  • 到目前为止您尝试过什么?您可以通过将@Body List&lt;ClassSchedule&gt; listSchedule 作为参数传递给接口,将其作为 json 发送到正文。
  • 我试过@Body ClassSchedule classSchedule 但说我第三个参数类型错误。找到:'java.util.List<....classschedule>',需要:'....ClassSchedule'
  • 我编辑了我的问题。

标签: android retrofit retrofit2


【解决方案1】:

您只需要将列表本身作为正文发送

public interface Interface_CreateClass {
    @POST("SetData/CreateClass")
    Call<JsonGet_CreateClass> getJSONCreateClass(@Query("username") String username,
                                                 @Body List<ClassSchedule> classSchedule);
}

注意:我认为您不能在同一个请求中将两个参数注释为Body

【讨论】:

  • Get me Multiple "@Body method annotations found. (parameter #3)" 但我需要 "@Body Classes classes" 来发送其他数据!
  • 您不能发送两个正文。这是没有意义的!您可以将两者包装在另一个类中并将其发送为Body
猜你喜欢
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
相关资源
最近更新 更多