Ich verweise diese SO Thread aber nicht in der Lage, richtige API-Anfrage zu generieren. api Anfrage ist als untennicht in der Lage, ganze JSON als Body-Parameter in Api Retrofit senden 2
Anfrage:
{
"clientId": "[email protected]",
"products": {
"productNumber": "8123456789123",
"batchNumber": "123456789",
"quantity": 50,
"salesPrice": 500,
"purchasePrice": 500,
"MRP": 600,
"mfgDate": "15/05/2017",
"expDate": "15/05/2017"
}
}
Api Schnittstelle
@FormUrlEncoded
@POST("/products/addBatch")
public Observable<AddBatchResponse> doAddBatch(@Header(WebServicesTags.TAG_AUTHORIZATION) String token,
@Field(WebServicesTags.TAG_CLIENT_ID) String clientId,
@Body BatchModel product);
und finden meine Api Anruf
BatchModel model = new BatchModel(productNumber, batchNumber, quantity, salesPrice, purchasePrice, mRP, mfgDate, expDate);
Observable<AddBatchResponse> addBatch = apiservice.doAddBatch(sessionManager.getKeyToken(), sessionManager.getKeyEmail(), model);
addBatch.subscribeOn(Schedulers.newThread())
nennen diese api zeigt mir unter Fehler
java.lang.IllegalArgumentException: @Body Parameter können nicht mit Form oder mehrteilige Codierung verwendet werden.
remove @FormUrlEncoded von Api-Schnittstelle –
dann zeigt es @Field-Parameter können nur mit Formularcodierung verwendet werden. –
Fügen Sie dann clientId in der JSON-Modellklasse hinzu und verwenden Sie @HEADER zum Senden des Header-Werts. Endlich sieht Ihre Schnittstelle wie folgt aus: public Observable doAddBatch (@Body BatchModel product); –