Создание параметра тела JSON для модифицированного POST-запроса - PullRequest
0 голосов
/ 26 ноября 2018

Я должен создать запрос POST через модернизацию, используя следующие данные.Я пытался создать тело, подобное приведенному в примере, но после нескольких попыток я все еще получаю Bad Request.Я хотел бы знать, что я делаю не так?

This the data that needs to be send from the application

Это поле необходимо отправить в API типа CreateShipmentDetails []

enter image description here

Это образец тела, которое я пытаюсь создать

  {
   "Shipments": [
       {
         "Shipper": {
            "Name": " DEMO ACCOUNT",
            "ContactPerson": "DEMO ACCOUNT",
            "Address1": "Block C, 3A01 & 3A02,",
            "Address2": "Level 3A, Kelana Square,",
            "Address3": "No.17, Jalan SS7/26",
            "Postcode": "47301",
            "City": "Petaling Jaya",
            "State": "Selangor",
            "CountryCode": "MY",
            "Phone1": "+60378038830"
        },
        "Consignee": {
            "ContactPerson": "LWE (AU) Ltd.",
            "Address1": "Test Address 1",
            "Address2": "Test Address 2",
            "Postcode": "70000",
            "City": "JOHOR BHARU",
            "State": "SELANGOR",
            "CountryCode": "MY",
            "Phone1": "03-8888888"
        },
        "Items": [
            {
                "Description": "item1",
                "Quantity": 10,
                "UnitValue": 20.0,
                "HSCode": "30",
                "SKU": "40",
                "Url": "50"
            }
        ],
        "Packages": [
            {
                "PackageReference": "pkg1",
                "Length": 10.0,
                "Width": 20.0,
                "Height": 30.0,
                "ActualWeight": 40.0
            }
        ],
        "PackageType": "SPX",
        "WeightType": "KG",
        "ShipmentDate": "2018-07-01T00:00:00+08:00",
        "TOSMode": "MY-E-EXPRESS",
        "CurrencyCode": "MYR"
    }
]
}

Это модель, которую я создал для CreateShipmentDetails

public class CreateShipmentDetails {

@SerializedName("Shipper")
@Expose
private Object Shipper;
@SerializedName("Consignee")
@Expose
private Object Consignee;
@SerializedName("Items")
@Expose
private List<ItemInfo> Items;
@SerializedName("Packages")
@Expose
private List<PakageInfo> Packages;
@SerializedName("ShipmentDate")
@Expose
private Date ShipmentDate;
@SerializedName("TOSMode")
@Expose
private String TOSMode;
@SerializedName("ReferenceNo")
@Expose
private String ReferenceNo;
@SerializedName("ReferenceSource")
@Expose
private String ReferenceSource;
@SerializedName("PackageType")
@Expose
private String PackageType;
@SerializedName("WeightType")
@Expose
private String WeightType;
@SerializedName("CurrencyCode")
@Expose
private String CurrencyCode;
@SerializedName("Remarks")
@Expose
private String Remarks;
@SerializedName("HawbNo")
@Expose
private String HawbNo;



public Object getShipper() {
    return Shipper;
}

public void setShipper(Object shipper) {
    Shipper = shipper;
}

public Object getConsignee() {
    return Consignee;
}

public void setConsignee(Object consignee) {
    Consignee = consignee;
}

public List<ItemInfo> getItems() {
    return Items;
}

public void setItems(List<ItemInfo> items) {
    Items = items;
}

public List<PakageInfo> getPackages() {
    return Packages;
}

public void setPackages(List<PakageInfo> packages) {
    Packages = packages;
}

public Date getShipmentDate() {
    return ShipmentDate;
}

public void setShipmentDate(Date shipmentDate) {
    ShipmentDate = shipmentDate;
}

public String getTOSMode() {
    return TOSMode;
}

public void setTOSMode(String TOSMode) {
    this.TOSMode = TOSMode;
}

public String getReferenceNo() {
    return ReferenceNo;
}

public void setReferenceNo(String referenceNo) {
    ReferenceNo = referenceNo;
}

public String getReferenceSource() {
    return ReferenceSource;
}

public void setReferenceSource(String referenceSource) {
    ReferenceSource = referenceSource;
}

public String getPackageType() {
    return PackageType;
}

public void setPackageType(String packageType) {
    PackageType = packageType;
}

public String getWeightType() {
    return WeightType;
}

public void setWeightType(String weightType) {
    WeightType = weightType;
}

public String getCurrencyCode() {
    return CurrencyCode;
}

public void setCurrencyCode(String currencyCode) {
    CurrencyCode = currencyCode;
}

public String getRemarks() {
    return Remarks;
}

public void setRemarks(String remarks) {
    Remarks = remarks;
}

public String getHawbNo() {
    return HawbNo;
}

public void setHawbNo(String hawbNo) {
    HawbNo = hawbNo;
}
}

Это мой класс интерфейсаpublic interface InterfaceAPI {

@FormUrlEncoded
@POST("Create")
Call<List> Create(@Field("Shipments") List<CreateShipmentDetails> Shipments);
}

И именно здесь я создал Call

    Call<List> call = APIClient.getInstance().getApiInterface().Create(shipments);
            call.enqueue(new Callback<List>() {
               @Override
               public void onResponse(Call<List> call, Response<List> response) {
                   Log.e("Response", response.message());
               }

               @Override
               public void onFailure(Call<List> call, Throwable t) {
                   Log.e("Failure :", t.getMessage());

               }
           });

Я пытался использовать List и JsonObject, но продолжаю получать ошибку.

1 Ответ

0 голосов
/ 26 ноября 2018

Проблема в вашем классе модели pojo.Тип данных, который вы используете для грузоотправителя и грузополучателя, равен Object, что неверно, поскольку оба этих ключа имеют модель классов отдельно.Так что код будет таким:

    public class CreateShipmentDetails {

    @SerializedName("Shipper")
    @Expose
    private Shipper shipper;
    @SerializedName("Consignee")
    @Expose
    private Consignee consignee;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...