2016-12-30 6 views
0

В API ожидает следующий формат с многочастной/формой данных:Как преобразовать класс модели в данные MultiPart Form с помощью дооснащения?

{ 
    "salesreq[ref]": "123", 
    "salesreq[pdate]": "123", 
    "salesreq[dealer_id]": "123", 
    "salesreq[sorders_attributes]": [ 
    { 
     "product_id": "123", 
     "uprice": "123", 
     "quantity": "123" 
    }, 
    { 
     "product_id": "123", 
     "uprice": "123", 
     "quantity": "123" 
    }, 
    { 
     "product_id": "123", 
     "uprice": "123", 
     "quantity": "123" 
    } 
    ] 
} 

Моя модель объект выглядит следующим образом:

public class NewReq 
{ 

    @SerializedName("salesreq[ref]") 
    @Expose 
    private String salesreqRef; 
    @SerializedName("salesreq[pdate]") 
    @Expose 
    private String salesreqPdate; 
    @SerializedName("salesreq[dealer_id]") 
    @Expose 
    private String salesreqDealerId; 
    @SerializedName("salesreq[sorders_attributes]") 
    @Expose 
    private List<SalesreqSordersAttributes> salesreqSordersAttributes = null; 

    public String getSalesreqRef() 
    { 
     return salesreqRef; 
    } 

    public void setSalesreqRef(String salesreqRef) 
    { 
     this.salesreqRef = salesreqRef; 
    } 

    public String getSalesreqPdate() 
    { 
     return salesreqPdate; 
    } 

    public void setSalesreqPdate(String salesreqPdate) 
    { 
     this.salesreqPdate = salesreqPdate; 
    } 

    public String getSalesreqDealerId() 
    { 
     return salesreqDealerId; 
    } 

    public void setSalesreqDealerId(String salesreqDealerId) 
    { 
     this.salesreqDealerId = salesreqDealerId; 
    } 

    public List<SalesreqSordersAttributes> getSalesreqSordersAttributes() 
    { 
     return salesreqSordersAttributes; 
    } 

    public void setSalesreqSordersAttributes(List<SalesreqSordersAttributes> salesreqSordersAttributes) 
    { 
     this.salesreqSordersAttributes = salesreqSordersAttributes; 
    } 
} 

Моего API вызов с помощью дооснащения выглядит примерно так:

@POST("/salereqs.json") 
Call<ResponseBody> newRequisition(@Body NewReq textPart); 

Вышеупомянутый вызов не работает, так как служба ожидает данных с несколькими частями/формами, и я отправляю их с помощью аннотации @body (прошу прощения за мой недостаток u знание API REST).

Мой вопрос:

Как отправить данные из нескольких частей, используя мой класс модели вместо того, чтобы вручную создать строку и передать его в качестве объекта MultipartBody.Part?

Кроме того, можно ли добавить загрузку изображения в эту функцию?

ответ

0

Из Retrofit's homepage вам просто нужно добавить аннотацию @Multipart и использовать @RequestBody для отправки данных. И да, возможно добавить загрузку изображения. Просто создайте тело запроса и добавьте его в параметры функции

+0

Не могли бы вы объяснить немного больше? Тело запроса имеет функцию writeTo. Как это поможет? – Asim