Android 如何发送带有改型字符串和数组列表的PUT请求我需要使用URL编码的模型

Android 如何发送带有改型字符串和数组列表的PUT请求我需要使用URL编码的模型,android,json,retrofit2,Android,Json,Retrofit2,有人能告诉我如何用这个json发送PUT请求吗 { "delivery_status": "Partially Completed", "signatures": "==skdjfkjdsakjhfoiuewyrdskjhfjdsaf", "assignee_note": "this is remarks and and and nothing", "id": "this is remarks and and and nothing", "returned_products

有人能告诉我如何用这个json发送PUT请求吗

 {
  "delivery_status": "Partially Completed",
  "signatures": "==skdjfkjdsakjhfoiuewyrdskjhfjdsaf",
  "assignee_note": "this is remarks and and and nothing",
  "id": "this is remarks and and and nothing",
  "returned_products": [
    {
      "id": "18",
      "quantity": 3,
      "reasons": "i dont know reason .. bus wapis a gya saman :-)"
    },
    {
      "id": "19",
      "quantity": 4,
      "reasons": "i dont know reason .. bus wapis a gya saman :-)"
    }
  ]
}
以下是我尝试过但失败的东西

@FormUrlEncoded
    @PUT("delivery_notes/update/1.json")
    Call<UploadDeliveryNote> postDeliveryNote(
            @Field("returned_products[]") ArrayList<ReturnedProduct> returned_products,
            @Field("delivery_status") String deliveryStatus,
            @Field("signatures") String signatures,
            @Field("id") String id,
            @Field("assignee_note") String note
    );
@FormUrlEncoded
@PUT(“delivery\u notes/update/1.json”)
邮寄通知(
@字段(“退货产品[]”)ArrayList退货产品,
@字段(“交货状态”)字符串交货状态,
@字段(“签名”)字符串签名,
@字段(“id”)字符串id,
@字段(“受让人注释”)字符串注释
);
但是失败了,然后尝试了这个

@Headers("Content-Type: application/json")
    @PUT("delivery_notes/update/1.json")
    Call<UploadDeliveryNote> postDeliveryNote(@Body String body);
@Headers(“内容类型:application/json”)
@PUT(“delivery\u notes/update/1.json”)
调用postDeliveryNote(@Body字符串Body);
我在这方面做错了什么? 我的主要问题是我正在发送简单的字符串,模型的一个对象是返回的产品的模型列表
提前感谢。

有很多方法可以通过改装来实现此调用,我认为最简单的方法就是制作模型类

你的电话看起来像-

@PUT(""delivery_notes/update/1.json"")
Call<ApiResponse<UploadDeliveryNote>> postDeliveryNote(@Body Example example);
Example.java

public class Example {

    @SerializedName("delivery_status")
    @Expose
    private String deliveryStatus;
    @SerializedName("signatures")
    @Expose
    private String signatures;
    @SerializedName("assignee_note")
    @Expose
    private String assigneeNote;
    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("returned_products")
    @Expose
    private List<ReturnedProduct> returnedProducts = null;

    public String getDeliveryStatus() {
        return deliveryStatus;
    }

    public void setDeliveryStatus(String deliveryStatus) {
        this.deliveryStatus = deliveryStatus;
    }

    public String getSignatures() {
        return signatures;
    }

    public void setSignatures(String signatures) {
        this.signatures = signatures;
    }

    public String getAssigneeNote() {
        return assigneeNote;
    }

    public void setAssigneeNote(String assigneeNote) {
        this.assigneeNote = assigneeNote;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List<ReturnedProduct> getReturnedProducts() {
        return returnedProducts;
    }

    public void setReturnedProducts(List<ReturnedProduct> returnedProducts) {
        this.returnedProducts = returnedProducts;
    }

}

当您有复杂的请求时使用@Body我也尝试使用@Body我需要使用URLencodedI从未使用过带有@Field注释的模型,所以不能告诉您相同的情况。让我知道你的要求,这样我就可以告诉你,如果有的话。
public class Example {

    @SerializedName("delivery_status")
    @Expose
    private String deliveryStatus;
    @SerializedName("signatures")
    @Expose
    private String signatures;
    @SerializedName("assignee_note")
    @Expose
    private String assigneeNote;
    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("returned_products")
    @Expose
    private List<ReturnedProduct> returnedProducts = null;

    public String getDeliveryStatus() {
        return deliveryStatus;
    }

    public void setDeliveryStatus(String deliveryStatus) {
        this.deliveryStatus = deliveryStatus;
    }

    public String getSignatures() {
        return signatures;
    }

    public void setSignatures(String signatures) {
        this.signatures = signatures;
    }

    public String getAssigneeNote() {
        return assigneeNote;
    }

    public void setAssigneeNote(String assigneeNote) {
        this.assigneeNote = assigneeNote;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List<ReturnedProduct> getReturnedProducts() {
        return returnedProducts;
    }

    public void setReturnedProducts(List<ReturnedProduct> returnedProducts) {
        this.returnedProducts = returnedProducts;
    }

}
public class ReturnedProduct {

    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("quantity")
    @Expose
    private int quantity;
    @SerializedName("reasons")
    @Expose
    private String reasons;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public String getReasons() {
        return reasons;
    }

    public void setReasons(String reasons) {
        this.reasons = reasons;
    }

}