Вот код: мне нужно отправить текст как ключ = "опции" и значение = a JSON как объект. Так что в вызове API я отправляю один файл PDF и модель JSON. Но нужно передать его как данные формы, как показано на рисунке ниже. Но он говорит, что отсутствуют данные формы (опции) JSON
{
"extraction": {
"headerFields": [
"documentNumber",
"taxId",
"taxName",
"purchaseOrderNumber",
"shippingAmount",
"netAmount",
"senderAddress",
"senderName",
"grossAmount",
"currencyCode",
"receiverContact",
"documentDate",
"taxAmount",
"taxRate",
"receiverName",
"receiverAddress"
],
"lineItemFields": [
"description",
"netAmount",
"quantity",
"unitPrice",
"materialNumber"
]
},
"clientId": "c_00",
"documentType": "invoice",
"enrichment": {
"sender": {
"top": 5,
"type": "businessEntity",
"subtype": "supplier"
},
"employee": {
"type": "employee"
}
}
}
это код, который я использую. Я пытался builder.addPart("options", String_JSON);
также.
try {
CloseableHttpClient client = HttpClientBuilder.create().build();
String token = tokenGeneration.generateToken(client);
logger.error("Token :"+token);
HttpPost httpPost = new HttpPost(ApplicationConstants.DOC_POST_URL);
httpPost.setHeader("Authorization", "Bearer " + token);
httpPost.setHeader("Content-Type", "multipart/form-data");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
File file =emailReader.emailReader();
if(file.exists()){
FileBody fileBody = new FileBody(file);
StringBody stringBody = new StringBody(ApplicationConstants.OPTIONS_BODY,ContentType.MULTIPART_FORM_DATA);
logger.error(" inside if FileBody fileBody passed");
builder.addPart("file", fileBody);
logger.error(" inside if FileBody fileBody added to builder passed");
// builder.addPart("options", stringBody);
builder.addTextBody("options", ApplicationConstants.OPTIONS_BODY, ContentType.TEXT_PLAIN);
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
CloseableHttpResponse response = client.execute(httpPost);
logger.error("response status code:"+response.getStatusLine().getStatusCode());
String responseFromECC = ServiceUtil.getDataFromStream(response.getEntity().getContent());
logger.error("responseFromECC"+responseFromECC.toString());
logger.error("responseFromECC"+responseFromECC.toString());
return new JSONObject(responseFromECC);
}else{
JSONObject obj = new JSONObject();
obj.put("Message", "File not added");
return obj;
}
} catch (Exception e) {
e.printStackTrace();
JSONObject obj = new JSONObject();
obj.put("Error", "Exception Block:"+e.getMessage());
return obj;
}
и получение ответа:
{"error": {"code": "4", "message": "Required form-data not provided.", "details": [{"code": "0", "message": "options"}]}}
Добавление упомянутого JSON в отмеченное место скриншота.