RetroFit Android Неверный запрос POST - PullRequest
0 голосов
/ 25 мая 2020

У меня есть POST API, я использую retroFit в моем android исходном коде, это параметр API в POSTM, это заголовок: введите здесь описание изображения

Это Body :

введите описание изображения здесь

Это мой псевдокод Android, интерфейс API:

  @FormUrlEncoded
    @Headers({"Content-Type: multipart/form-data", "Authorization: F31daaw313415"})
    @POST("api/store/order")
    Call<List<PostCommandResponse>> setCommandeProduct(@FieldMap Map<String, Object> test);

Это моя карта

  data.put("product_id",productId);
            data.put("adress", RequestBody.create(MediaType.parse("multipart/form-data"),adresse));
            data.put("city",RequestBody.create(MediaType.parse("multipart/form-data"),city));
            data.put("zip",RequestBody.create(MediaType.parse("multipart/form-data"),zip));
            data.put("first_name",RequestBody.create(MediaType.parse("multipart/form-data"),surname));
            data.put("last_name",RequestBody.create(MediaType.parse("multipart/form-data"),lastname));

Но всегда ответ 400 - неверно сформированный запрос.

1 Ответ

0 голосов
/ 26 мая 2020

Я предлагаю использовать класс модели данных, как показано ниже.

public class UserInfo {

@SerializedName("product_id")
@Expose
private Integer productId;
@SerializedName("address")
@Expose
private String address;
@SerializedName("city")
@Expose
private String city;
@SerializedName("zip")
@Expose
private String zip;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;

public Integer getProductId() {
return productId;
}

public void setProductId(Integer productId) {
this.productId = productId;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public String getZip() {
return zip;
}

public void setZip(String zip) {
this.zip = zip;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

}

установите значения в этой модели UserInfo и передайте это в вызов API, как показано ниже.

@Headers({"Content-Type: multipart/form-data", "Authorization: Bearer F31daaw313415"})
@POST("api/store/order")
Call<List<PostCommandResponse>> setCommandeProduct(@Body UserInfo test);

Небольшое исправление: также проверьте, нужно ли отправлять адрес или адрес в JSON. адрес используется в изображении тела JSON. Измените соответствующим образом.

Изменить : вы также отправляете заголовки в неправильном формате.

Это должно быть примерно так.

@Headers({"Content-Type: multipart/form-data", "Authorization: Bearer F31daaw313415"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...