Я пытаюсь отправить данные, которые будут отображаться в таком виде:Как отправить вложенные данные json в форме POJO в мультиформатной модификации?
{
"id": ,
"venue": {
"id": ,
"name": "",
"city": "",
"address": "",
"rating": null,
"point": null
},
"name": "",
"time": "",
"event_pic": null,
"description": "",
"event_type": "Movie",
"invite_only": ,
"free": ,
"age_restriction": ,
"ticket_price": ,
"user":
}
Я сделал интерфейс, как это с помощью модификации:
@Multipart
@POST("api/events/")
Observable<Event> postEvent(
@Part("venue") Venue venue,
@Part("event_pic") RequestBody image,
@Part("name") RequestBody name,
@Part("description") RequestBody description,
@Part("time") RequestBody date,
@Part("event_type") RequestBody type,
@Part("invite_only") RequestBody isInviteOnly,
@Part("age_restriction") RequestBody isAgeRestricted,
@Part("free") RequestBody isFree,
@Part("ticket_price") RequestBody ticketPrice
);
И размещен с помощью rxjava так:
public void postEvent() {
postEventUseCase.setAgeRestricted(ageRestricted);
postEventUseCase.setDate(date);
postEventUseCase.setFree(free);
postEventUseCase.setInviteOnly(inviteOnly);
postEventUseCase.setDescription(description);
postEventUseCase.setName(name);
postEventUseCase.setPath(path);
postEventUseCase.setTicketprice(ticketprice);
postEventUseCase.setType(type);
postEventUseCase.setVenue(venue);
subscription = postEventUseCase.execute().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe();
}
Однако, когда я пытаюсь отправить его, я получаю эту ошибку: 02-14 16: 21: 26,468 7133-7762/com.wyat.wyat D/OkHttp: < - 400 Bad
Request http://zacmwa.pythonanywhere.com/api/events/ (7417ms)
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Server: openresty/1.9.15.1
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Date: Tue, 14 Feb 2017 13:21:26 GMT
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Content-Type: application/json
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Transfer-Encoding: chunked
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Connection: keep-alive
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Vary: Accept
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: X-Frame-Options: SAMEORIGIN
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Allow: GET, POST, OPTIONS
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: {"venue":["This field is required."]}
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: <-- END HTTP (37-byte body)
EDIT:
Однако ведение журнала показывает, что место создано:
02-14 16:21:18.620 7133-7762/com.wyat.wyat D/OkHttp: Content- Disposition: form-data; name="venue"
02-14 16:21:18.620 7133-7762/com.wyat.wyat D/OkHttp: Content-Transfer-Encoding: binary
02-14 16:21:18.620 7133-7762/com.wyat.wyat D/OkHttp: Content-Type: application/json; charset=UTF-8
02-14 16:21:18.620 7133-7762/com.wyat.wyat D/OkHttp: Content-Length: 59
02-14 16:21:18.620 7133-7762/com.wyat.wyat D/OkHttp: {"address":"ersysaj","city":"ahgsagya","name":"hdyfjfnfjf"}
Как разместить данные? Я сделал это успешно с другими средствами, поэтому я знаю, что проблема не в бэкэнде. Что вызывает ошибку?
Местом POJO, как это:
public class Venue {
@SerializedName("name")
@Expose
private String name;
@SerializedName("city")
@Expose
private String city;
@SerializedName("address")
@Expose
private String address;
@SerializedName("rating")
@Expose
private Double rating;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Venue withName(String name) {
this.name = name;
return this;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getRating() {
return rating;
}
public void setRating(double rating) {
this.rating = rating;
}
}
{ «выставки»: [ «Это поле является обязательным.»]} –
@ZiedRebhi у меня есть добавлены журналы, показывающие, что место встречи создано. – zacmwa