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;

}

Спасибо за ответы, которые вы могли бы дать мне. Я застрял некоторое время, и я не нашел никакого ответа в Интернете.

0 ответов

Другие вопросы по тегам