servicenow почтовый файл Джерси
Я пытаюсь отправить файл в ServiceNow через остальные API api/now/attachment/file
, Я тоже пробовал с api/now/attachment/upload
, В любом случае, я не смог этого сделать.
Если я пытаюсь с api/now/attachment/upload у меня есть ответ:
{
"error": {
"detail":null,
"message":"Failed to create the attachment. File part might be missing in the request."
},
"status":"failure"
}
Если я попробую с api/now/attachment/file
У меня есть ответ:
{
"error": {
"message":"Missing parameter: table_name",
"detail":null
},
"status":"failure"
}
Когда я делаю тест с помощью проводника API, у меня не возникает никаких ошибок, и он прекрасно работает, поэтому я предполагаю, что проблема в моем коде Java... Я использую версию 2.22.2 и Java 1.8.
Вот мой код:
@Test
public void createPicture() {
String postAttachmentURI = "api/now/attachment/file";
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("plop.png").getFile());
Map<String, String> params = new HashMap<String, String>();
params.put("table_name", "sc_cat_item");
params.put("file_name", "plop.png");
params.put("table_sys_id", "c427fda1db4e4f408558d141ce961922");
String jsonPOSTResult = ConnectToApi.PostAttachmentConnection(postAttachmentURI, params, file);
System.out.println("\nRESPONSE: \n");
System.out.println(jsonPOSTResult);
}
public static String PostAttachmentConnection(String serviceNowURI, Map<String, String> data, File file) {
String jsonResult = null;
FormDataMultiPart multipart = null;
SetProxy();
try {
Client client = IgnoreSSLClient();
WebTarget target = client.target(serviceNowURL + ":" + serviceNowPORT).path(serviceNowURI)
.register(MultiPartFeature.class);
multipart = new FormDataMultiPart();
for (Iterator<String> iterator = data.keySet().iterator(); iterator.hasNext();) {
String paramName = iterator.next();
multipart.field(paramName, data.get(paramName));
}
FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("f", file,
MediaType.APPLICATION_OCTET_STREAM_TYPE);
multipart.bodyPart(fileDataBodyPart);
multipart.getHeaders().add("Accept","application/json");
multipart.getHeaders().add("Content-Type","image/png");
Response result = target.request().post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));
jsonResult = result.readEntity(String.class);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != multipart) {
try {
multipart.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return jsonResult;
}
Спасибо за ответы, которые вы могли бы дать мне. Я застрял некоторое время, и я не нашел никакого ответа в Интернете.