Harshul Vishwakarma Ответов: 1

Как передать массив в параметре POST с помощью retrofit ?


Это формат Json, который я хочу опубликовать с помощью Retrofit.
{
  "userTreatmentId": "string",
  "informedConsentId": "string",
  "other": [
    {
      "gdprOptionId": "string",
      "value": true,
      "required": true
    }
  ]
}


Это и есть интерфейс:
@POST("/api/requestSign")
    Call<RequestSignResponse> requestSign(@Body SignRequest signRequest, @Path("patientGUID") String cardNumber);


Это класс модели запроса знака.
public class SignRequest {

    @SerializedName("userTreatmentId")
    @Expose
    private String userTreatmentId;

    @SerializedName("informedConsentId")
    @Expose
    private String informedConsentId;

    @SerializedName("other")
    @Expose
    private Other[] other = null;

    public String getUserTreatmentId() {
        return userTreatmentId;
    }
    public void setUserTreatmentId(String userTreatmentId) {
        this.userTreatmentId = userTreatmentId;
    }

    public String getInformedConsentId() {
        return informedConsentId;
    }
    public void setInformedConsentId(String informedConsentId) {
        this.informedConsentId = informedConsentId;
    }

    public Other[] getOther() {
        return other;
    }
    public void setOther(Other[] other) {
        this.other = other;
    }

}


Это другой класс модели массива для запроса знака
public class Other {

    @SerializedName("gdprOptionId")
    @Expose
    private String gdprOptionId;

    @SerializedName("value")
    @Expose
    private Boolean value;

    @SerializedName("required")
    @Expose
    private Boolean required;

    public String getGdprOptionId() {
        return gdprOptionId;
    }
    public void setGdprOptionId(String gdprOptionId) {
        this.gdprOptionId = gdprOptionId;
    }

    public Boolean getValue() {
        return value;
    }
    public void setValue(Boolean value) {
        this.value = value;
    }

    public Boolean getRequired() {
        return required;
    }
    public void setRequired(Boolean required) {
        this.required = required;
    }

}


Что я уже пробовал:

private void processData() {

        SignRequest signRequest = new SignRequest();

        signRequest.setInformedConsentId(informedConsentId);
        signRequest.setUserTreatmentId(null);
        signRequest.setOther(arrayList2);

        ApiHelper.getService().requestSign(signRequest, PreferencesHelper.getPrefCardNumber(this))
                .enqueue(new Callback<RequestSignResponse>() {
            @Override
            public void onResponse(Call<RequestSignResponse> call, Response<RequestSignResponse> response) {
                Toast.makeText(ConsentDetailActivity.this, response.toString(), Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFailure(Call<RequestSignResponse> call, Throwable t) {
                Toast.makeText(ConsentDetailActivity.this, t.toString(), Toast.LENGTH_LONG).show();
            }
        });
    }

David Crow

Что именно (не) происходит?

1 Ответов

Рейтинг:
2

Sandeep Mewara

Учитывая, что вы не поделились тем, что работает, а что нет, Ниже приводится то, что может привести вас к тому, что вы задали в названии вопроса: Как разместить массив в модифицированной андроида[^]

Аналогия обсуждение в другом месте[^].