java - 如何使用 Retrofit 发布 ArrayList <Object>?

标签 java post retrofit2

我想将这样的内容发送到服务器

{
      "tourId": 5,
      "stopPoints": [
          {
              "arrivalAt": 15532956000,
              "lat": 10.826125820975317,
              "leaveAt": 1553299200000,
              "long": 106.68923623859882,
              "maxCost": 100000,
              "minCost": 50000,
              "name": "Bun new",
              "serviceTypeId": 1
          },
          {
              "arrivalAt": 15532956011,
              "lat": 13.826125820975317,
              "leaveAt": 1553299200000,
              "long": 100.68923623859882,
              "maxCost": 150000,
              "minCost": 10000,
              "name": "Bun update",
              "serviceTypeId": 1
          },
       ],

}

这是我的服务界面

@FormUrlEncoded
    @POST("tour/set-stop-points")
    Call<serviceStopPoints> stopPointsSet(@Body serviceStopPoints serviceStopPoints);

这是 stopPoint 类

public class stopPoint {
    @SerializedName("arrivalAt")
    @Expose
    private long arrivalAt;
    @SerializedName("lat")
    @Expose
    private double lat;
    @SerializedName("leaveAt")
    @Expose
    private long leaveAt;
    @SerializedName("long")
    @Expose
    private double lng;
    @SerializedName("maxCost")
    @Expose
    private long maxCost;
    @SerializedName("minCost")
    @Expose
    private long minCost;
    @SerializedName("name")
    @Expose
    private String name;
    @SerializedName("serviceTypeId")
    @Expose
    private int serviceTypeId;
}

这是 serviceStopPoints 类

public class serviceStopPoints extends Number {
    @SerializedName("tourId")
    @Expose
        String tourID;
    @SerializedName("stopPoints")
    @Expose
    ArrayList<stopPoint> stopPoints;
}

我已阅读此链接并尝试一下 Sending ArrayList<Object> POST request with Retrofit 但我不明白这一行

 Call<ServiceResult<Integer>> orderSet(@Body Order order);

请帮我用 Retrofit 发送这个 ArrayList。 感谢您阅读我的问题。

最佳答案

将 get/set 添加到您的类中,并且 创建您的请求对象。

serviceStopPoints request = new serviceStopPoints();
List<stopPoint> stopPointList = new ArrayList<stopPoint>();
stopPoint s = new stopPoint();
s.setArrivalAt("..");
.
.
.
stopPointList.add(s);
request.setTourID("1234);
request.setStopPoints(stopPointList);

使用

 ApiHelper.getService().stopPointsSet(request).enqueue(new Callback<serviceStopPoints>() {
            @Override
            public void onResponse(Call<serviceStopPoints> call, Response<serviceStopPoints> response) {
                //do with the response
            }

            @Override
            public void onFailure(Call<serviceStopPoints> call, Throwable t) {
               //error
            }
        });

我认为你不需要@FromUrlEncoded。

希望有帮助:)

关于java - 如何使用 Retrofit 发布 ArrayList <Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180245/

相关文章:

javascript - 简单的 javascript AJAX 发布功能不起作用

c# - MVC 5 使用一个附加参数上传文件 (POST)

jquery - 如何转义通过 JQuery ajax 函数发送的查询字符串中的特殊字符?

java - 使用 Retrofit 2 发送带有 url 参数的帖子

机器人,改造 : Pressing back button during API call crashes the app

java - 如何优化使用 Singleton 扩展 JLabel 的类

java - 使用 UriBuilder 从 XmlAdapter 创建绝对 URI

java - 用于表情符号的 Google 文本转语音

java - 包不存在

android - 改造 : Custom ConverterFactory only for response